AIX open(): ファイル記述子 0(!?)

AIX open(): ファイル記述子 0(!?)

特定のディレクトリにテキストファイルがあることを検出した後、デーモンは上記のテキストファイルを開いてデータを読み込み、そのデータをTCPソケットを介して転送する実行可能ファイルを起動します。

オープンテキストファイルのファイル記述子番号は、ファイル処理に関するその他の情報とともに記録されます。

時々、open()呼び出しはファイル記述子0を返すことがわかりました(通常はstdin用に予約されています)。エラーは検出されず、すべてがうまく機能します。 Cのソースコードは、open()と後でclose()のみを実行します。返されたファイルハンドルに対してリダイレクト、コピー、またはその他の魔法は行われません。

どのような状況でプロセスのファイル記述子0を一般的な目的に使用できますか(そしてstdinに帰属しません)?

プラットフォームはAIX 5.2です。

ベストアンサー1

どのような状況で、プロセスのファイルディスクリプタ0が通常の目的で利用可能になりますか(そしてstdinに帰属しません)?

<&-誰かが例えばシェルの標準入力を閉じたとき。

#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
int main() {
    printf("%d\n",open("foo",O_CREAT));
}

おすすめ記事