私のLinux環境では、ファイル記述子は/ dev / fdにあります。
AIX(unix)のstdin、stdout、およびstderrファイル記述子の場所はどこにありますか?
見つかりません。
答え1
この質問は、procファイルシステムの一般性に関する誤解に基づいています。 SolarisやLinuxなど、この機能を実装するシステムには、/dev/fd
ファイルディスクリプタ(番号)とファイルディスクリプタで構成されるスクリプトに使用できる特別なデバイスがあります。
Solaris(およびMacOS、FreeBSDなどの一部のBSD)では、/dev/fd
これは以下の仮想フォルダですが、LinuxはプロセスIDと一致する(仮想)フォルダへ/dev
のシンボリックリンクを使用します。/proc
proc ファイルシステムの標準はありません。〜するその他。
BSDは同じスキームを使用しません。 Solaris、MacOS、およびFreeBSDはこのフォルダへのシンボリックリンクを使用し、NetBSDstdin
とOpenBSDはこれを行うためにデバイスノード(同じメジャー/マイナー番号を含む)を使用します。しかし、彼らは非常に似ています。 (BSDとは異なり、Solarisサポート)とは別です。stdout
stderr
/dev/fd
/dev/fd
/proc
AIX 5.3および7.1システムを確認すると、procファイルシステムが実装されますが/dev/fd
。する/proc
現在、プロセスIDを見つけることができる仮想ファイルシステムがあります。それfd
ファイル記述子があるフォルダです。
通常、ファイル記述子は0、1、2に初期化されます。標準入力、標準出力、標準エラーそれぞれ。
追加資料:
/proc
- システムのプロセスとスレッドに関するステータス情報を含みます。(AIX 7)
ターゲットfd
:
プロセスの開いているすべてのファイル記述子を含むファイル。各項目は、プロセスのオープンファイル記述子に対応する10進数です。エンティティが汎用ファイルを参照している場合は、通常のファイルセマンティクスを使用して開くことができます。制御プロセスがより大きなアクセス権を取得できないようにするために、制御プロセスには自己読み取り/書き込みオープンモード以外のファイルアクセスモードはありません。目次はリンクとして表示されます。別の種類のアイテムを開こうとすると失敗します(したがって、権限は0としてリストされます)。
使用
/proc
ファイルシステムとコマンド(Oracle / Solaris)fd - ファイル記述子ファイル(Oracle / Solaris)
3.15/dev/fdから UNIX®環境の高度なプログラミング:UNIXファイルI / O 説明するSVR4サポート
/dev/fd
されていますが、クイックチェックにより(他の2つのSVr4であるAIXおよびHPUXとは異なり)Solarisのみがこの機能を提供していることがわかります。 HPUXもなく、プラットフォームのどの場所にも/proc
魔法装備はありません。stdin
/dev/fd 機能は Tom Duff によって開発され、Research Unix System バージョン 8 に登場しました。 SVR4および4.3+BSDがサポートされています。 POSIX.1の一部ではありません。
答え2
これは人工的なファイル記述子なので、確実に処理する必要はありません。これは、歴史的な不在と一部のシステムではまだ不在を説明しています。
シェルは、TTYに従ってこれらの標準ファイル記述子を処理します。シェルが起動したらを呼び出し、isatty()
(TTY)の場合は自動的に標準ファイル記述子を開きます。