パイプの反対側が接続を受信するのを待って open() 呼び出しがハングしないように、特定のパイプに対して開かれたファイル記述子を使用してサブプロセスを呼び出したいと考えています。
デモンストレーションするには:
$ mkfifo /tmp/foobar.pipe
$ some_program --command-fd=5 5</tmp/foobar.pipe
この場合、some_program
何らかのプロセスが/tmp/foobar.pipe
書き込み用に開かれるまで実行されません。ただし、some_program
コマンドを受信していない場合でも有用な効果があるため、目的の動作をsome_program
すぐに実行する必要があります。
/tmp/foobar.pipe
代替スクリプト言語 (python、perl など) またはフラグで開く C ラッパーを介して実行することでこれを行うメカニズムO_NONBLOCK
は明らかです。可能であれば、純粋なbashソリューションを探しています。