GNU/Linux >> Linux の 問題 >  >> Linux

現在の制御端末と`/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プロセスの制御端末を参照していますか?

承認された回答:

tty セクション4のマンページは次のように主張しています:

ファイル/dev / tty はメジャー番号5とマイナー番号0の文字ファイルで、通常はモード0666とowner.grouproot.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 (mosvyの回答を参照してください。これは、/dev/ttyの性質についてより賢明な説明も提供します。 。

関連:ターミナルを使用してMacのユーザー補助設定を変更しますか?

/dev/tty リンクではなく、さまざまな制御端末を表すことができます。これは、それを実装するドライバーが、呼び出し元のプロセスの制御端末が存在する場合はそれを決定するためです。

これは/dev/ttyと考えることができます 制御端末であるため、制御端末にのみ意味のある機能を提供しますが、/dev/pts/2 などはプレーン端末であり、そのうちの1つが特定のプロセスの制御端末である可能性があります。


Linux
  1. Cのstrtok_rとstrtok_sの違いは何ですか?

  2. Linux での lsof と netstat の違いは何ですか?

  3. ls と l はどう違いますか?

  1. rdesktop と xfreerdp の違いは何ですか?

  2. $(CC) と $CC の違いは何ですか?

  3. unlink と rm の違いは何ですか?

  1. InnoDBとMyISAMの違いは何ですか?

  2. コマンド`tty`の出力とファイル`/dev / tty`はどちらも、現在のBashプロセスの制御端末を参照していますか?

  3. ルートとIPルートの違いは何ですか?