Lubuntu 18.04では、lxterminalでシェルを実行します。制御端子は現在擬似端子スレーブです。
$ tty
/dev/pts/2
現在の制御端末/dev/pts/2
と/dev/tty
。
/dev/tty
現在の制御端末と同じです/dev/pts/2
。$ echo hello > /dev/tty hello $ cat < /dev/tty world world ^C
しかし、これらのファイルは、互いにシンボリックリンクやハードリンクというよりは関係のないファイルのようです。
$ ls -lai /dev/tty /dev/pts/2 5 crw--w---- 1 t tty 136, 2 May 31 16:38 /dev/pts/2 13 crw-rw-rw- 1 root tty 5, 0 May 31 16:36 /dev/tty
異なる制御端末を使用する異なるセッションの
/dev/tty
場合、制御端末が保証される。どのようにシンボリックリンクやハードリンク以外の制御端末になることができますか?
それでは、その関連性と違いは何ですか?どんな助けでも大変感謝します!
この記事は前の記事から来ました'tty'コマンドの出力と '/dev/tty'ファイルは現在のbashプロセスの制御端末を指していますか?
ベストアンサー1
tty
セクション4のマンページ主張は次のとおりです。
文書/dev/ttyメジャーデバイス番号5番、マイナーデバイス番号0番、通常モードは0666、所有者はroot.ttyの文字ファイルです。これはプロセスの制御端末(存在する場合)と同義です。
とは別に
ioctl(2)
ttyが指すデバイスでサポートされているリクエストioctl(2)
TIOCNOTTY
サポートリクエスト。
TIOCNOTTY
制御端末から呼び出しプロセスを分離します。
プロセスがセッションリーダー
SIGHUP
の場合、SIGCONT
信号はフォアグラウンドプロセスグループに送信され、現在のセッション内のすべてのプロセスは制御ttyを失います。これ
ioctl(2)
呼び出しは、関連付けられたファイル記述子でのみ機能します。 /dev/tty。ユーザーがターミナルからデーモンを呼び出すと、デーモンによって使用されます。プロセスが開こうとします。/dev/tty。オープンに成功すると端末からそれ自体を分離するために使用されますTIOCNOTTY
が、オープンに失敗した場合は明らかに端末に接続されず、それ自体を分離する必要はありません。
これは/dev/tty
、シンボリックリンクが制御端末ではない理由を部分的に説明できます。添付ファイルをサポートし、ioctl
制御端末がない可能性があります(ただし、プロセスは常にアクセスを試みることができます/dev/tty
)。ただし、文書が正しくありません。追加コンテンツにioctl
アクセスできるだけでなく、渡す /dev/tty
(望むよりMosviの答えまた、)の属性についてより合理的な説明を提供します/dev/tty
。
/dev/tty
リンクを実装するドライバは、呼び出しプロセスの制御端末が何であるかを決定するので、リンクとは異なる制御端末を表すことができる。
これを制御端末と考えることができるので、制御/dev/tty
端末だけに意味のある機能を提供する一方、等は/dev/pts/2
一般端末であり、その一つは与えられたプロセスの制御端末になることができます。