特定のディレクトリにテキストファイルがあることを検出した後、デーモンは上記のテキストファイルを開いてデータを読み込み、そのデータを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));
}