stdio以外の場合(mysql)、プロセスは「該当する」端末をどのように知ることができますか?

stdio以外の場合(mysql)、プロセスは「該当する」端末をどのように知ることができますか?

プログラムの1つがmysql私の注目を集めました。フラグを使用して、対話的にパスワードを要求するように指示できます-p。この場合、期待どおりにプロンプ​​トが端末に表示され、入力した内容がパスワードとして受け入れられます。しかし、驚くべきことに、3つすべてをリダイレクトしても、これが起こりますstd{in,out,err}

$ mysql -p </dev/null >/dev/null 2>/dev/null
Enter password:

また、パスワードを正しく読みます。ファイルにリダイレクトすると、stderrログインに失敗したかどうかを確認できます。

どの端末でパスワードを要求するのか、どのようにプロセスがわかりますか?親プロセスに接続されている端末を確認していますか?

ベストアンサー1

Unixプロセスはリダイレクトをバイパスすることによって/ dev / ttyからデータを読み取ることができます。

おすすめ記事