「新しいセッションに制御端末がない」とはどういう意味ですか?

「新しいセッションに制御端末がない」とはどういう意味ですか?

この参照新しいセッションの作成に関して、次のように言います。呼び出しプロセスは新しいセッションのリーダーであり、新しいプロセスグループのプロセスグループリーダーです。制御端子なし

だから私は以下のコードが何も印刷せず、printfがエラー(標準出力にバインドされた端末がないことについて)を返すと予想しましたが、そうではありません。プログラムを実行している端末に印刷されます。

私に何の問題もあるのか?

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main(void)
{
    if (!fork())
    {
        if (setsid() == -1) // create new session by a child process
            return -1;
        printf("New sesions %d is created\n", getsid(0)); 
    }
    else
        wait(NULL);

    return 0;
}

答え1

私の考えでは、これは子プロセスがまだファイル記述子を継承し、親プロセスを指しているので、子stdoutプロセスも指すようになり、カーネルがどこに送るかを知る方法なので、制御とは何の関係もないからだと思います。ここにターミナルがあります。私が正しく理解したなら/dev/pts/1234/dev/pts/1234stdout

関連情報