現在の制御端末と `/dev/tty`の関係は何ですか?

現在の制御端末と `/dev/tty`の関係は何ですか?

Lubuntu 18.04では、lxterminalでシェルを実行します。制御端子は現在擬似端子スレーブです。

$ tty
/dev/pts/2

現在の制御端末/dev/pts/2/dev/tty

  1. /dev/tty現在の制御端末と同じです/dev/pts/2

    $ echo hello > /dev/tty
    hello
    
    $ cat < /dev/tty
    world
    world
    ^C
    
  2. しかし、これらのファイルは、互いにシンボリックリンクやハードリンクというよりは関係のないファイルのようです。

    $ 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一般端末であり、その一つは与えられたプロセスの制御端末になることができます。

おすすめ記事