標準入力(stdin)が端末の場合もあります。
$ tty
/dev/pts/0
時にはそうではありません:
$ echo hello | tty
not a tty
$ tty < /dev/null
not a tty
$ tty << eof
> hello
> eof
not a tty
端末でない場合、「stdin」とは何ですか? 「ttyではない」グループは集合的な名前を持っていますか、それとも別々に参照されますか?
ベストアンサー1
ファイル(またはデバイスファイルまたはFIFO)またはパイプです。
通常のオープンファイルよりも制御端末での操作方法が多いため、区別が重要です。これがメリットになることもあり、デメリットになることもあります。
たとえば、端末をリダイレクトできません。 stdinをリダイレクトできますが、これはttyからの読み込みには影響しません。プログラムはしばしばttyからパスワードを読みます。これは、コマンドが標準入力から読み取ろうとするデータを妨げないために良いかもしれませんが、コマンドをスクリプト化したい場合(たとえば、端末を処理する必要があるexpect
場合)、それはうまくsocat
いかないかもしれません。
しかし、プロセスが標準入力に接続されていなくても、まだ制御ttyがあります。