私はkonsole(Tab1とTab2)で2つのタブを開いていると言います。printfからのメッセージが端末にどのようにルーティングされますか?
私はそれらの両方でのttyを実行すると、私が持っている:
Tab1を:
~$ tty
/dev/pts/23
TAB2:
~$ tty
/dev/pts/24
私はprintfの持つ単純なプログラムhello.cを実行する場合( "Hello")、システムがstdout(ファイルid 1)から/ dev/pts/23への書き込み、konsoleで読み込まれてTab1に表示される様子
システムは、/ dev/pts/23に "Hello"文字列を与え、/ dev/pts/24に与えないとシステムが知っている方法を教えてください。そしてそれはどうやって?
"Hello"を送信するpsudoterminalを知るために、プログラムにbashによって与えられたパラメータはありますか?あるいは、プログラムは文字列をbashに送り返します(どのようにして?)疑似端末がデータを送るのを知っていますか?あなたは、プロセスのオープン・ファイルを見れば
は、あなたが見ることができ、あなたの助け
オープンファイルのセットは、すべてのプロセスに対してローカルです。シェルはstdin/out/errスロットにオープンされた特定の擬似端末デバイスを持っています。このデバイスは、生成時に子プロセスによって継承されます。擬似端末自体は基本的にシステムコールによって割り当てられた名前付きパイプであり、使用しているx端末や他の端末からテキストを読み込んで画面に出力しています。ところで、[これは良い読書です](http://www.linusakesson.net/programming/tty/)。 – doynax