stdin が閉じられたときに実行を停止するには、純粋な C で書かれたプログラムが必要です。
プログラムのメイン サイクルで行われる無期限の作業があり、ブロッキング チェック (のようなgetc()
) を使用する方法はありません (標準入力にデータが到着することは想定されていません - 未知の時間だけ開かれたままになります)。
inetd、xinetd、またはそれらの類似物でホストされているネットワークデーモンの実現に説明されている機能を使用する予定です-接続が開いたままの状態で標準出力にデータを出力し、閉じたときに作業を正しく終了する必要があります。接続が終了しても停止しないため、ホスティングサービスによってプログラムが強制終了されました。
fctntl()
標準入力記述子にO_NONBLOCK
フラグを適用すると、read()
ノンブロッキング モードで関数を使用できるようになるのでしょうか? select()
どうにか使えばいいのでは?
PS データは想定されていませんが、stdin に到着する可能性があります。ノンブロッキング読み出しの方法は、質問に対する答えになるでしょう。