AIX(unix)のstdin、stdout、およびstderrファイル記述子の場所はどこにありますか?

AIX(unix)のstdin、stdout、およびstderrファイル記述子の場所はどこにありますか?

私のLinux環境では、ファイル記述子は/ dev / fdにあります。

AIX(unix)のstdin、stdout、およびstderrファイル記述子の場所はどこにありますか?

見つかりません。

答え1

この質問は、procファイルシステムの一般性に関する誤解に基づいています。 SolarisやLinuxなど、この機能を実装するシステムには、/dev/fdファイルディスクリプタ(番号)とファイルディスクリプタで構成されるスクリプトに使用できる特別なデバイスがあります。

Solaris(およびMacOS、FreeBSDなどの一部のBSD)では、/dev/fdこれは以下の仮想フォルダですが、LinuxはプロセスIDと一致する(仮想)フォルダへ/devのシンボリックリンクを使用します。/procproc ファイルシステムの標準はありません。〜するその他。

BSDは同じスキームを使用しません。 Solaris、MacOS、およびFreeBSDはこのフォルダへのシンボリックリンクを使用し、NetBSDstdinとOpenBSDはこれを行うためにデバイスノード(同じメジャー/マイナー番号を含む)を使用します。しかし、彼らは非常に似ています。 (BSDとは異なり、Solarisサポート)とは別です。stdoutstderr/dev/fd/dev/fd/proc

AIX 5.3および7.1システムを確認すると、procファイルシステムが実装されますが/dev/fdする/proc現在、プロセスIDを見つけることができる仮想ファイルシステムがあります。それfdファイル記述子があるフォルダです。

通常、ファイル記述子は0、1、2に初期化されます。標準入力標準出力標準エラーそれぞれ。

追加資料:

プロセスの開いているすべてのファイル記述子を含むファイル。各項目は、プロセスのオープンファイル記述子に対応する10進数です。エンティティが汎用ファイルを参照している場合は、通常のファイルセマンティクスを使用して開くことができます。制御プロセスがより大きなアクセス権を取得できないようにするために、制御プロセスには自己読み取り/書き込みオープンモード以外のファイルアクセスモードはありません。目次はリンクとして表示されます。別の種類のアイテムを開こうとすると失敗します(したがって、権限は0としてリストされます)。

/dev/fd 機能は Tom Duff によって開発され、Research Unix System バージョン 8 に登場しました。 SVR4および4.3+BSDがサポートされています。 POSIX.1の一部ではありません。

答え2

これは人工的なファイル記述子なので、確実に処理する必要はありません。これは、歴史的な不在と一部のシステムではまだ不在を説明しています。

シェルは、TTYに従ってこれらの標準ファイル記述子を処理します。シェルが起動したらを呼び出し、isatty()(TTY)の場合は自動的に標準ファイル記述子を開きます。

関連情報