標準入力:ttyではありません

標準入力:ttyではありません

標準入力(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があります。

おすすめ記事