パイプに書き込み/読み取りを試みる前に、パイプが壊れているかどうかを確認することは可能ですか?
while
親から複数の子に通信するパイプに書き込むためにループを利用しています。ループの過程で、いくつかの子が閉じます。ループが発生して再度書き込みを試みると、パイプが壊れているため SIGPIPE によって強制終了されるため、プログラムがシャットダウンします。パイプが壊れていることはわかっているので、子供たちにパイプを閉じて終了するようにプログラムしました(必要です)。私はまだループを終了して、プログラムを続行したいと考えています。パイプが壊れているかどうかをチェックし、壊れている場合はスキップして (エラー出力なしで)、プログラムを続行します (他の子にはまだ書き込む必要があります)。
それで、それは可能ですか?cの例は素晴らしいでしょう。
これが私が求めていることの簡単な疑似コード表現です:
int i = 0;
while(i != 5)
{
if (mypipe[WRITE] is BROKEN)
//Do Nothing ---Basically Skip
else if (some condition)
write(mypipe[WRITE]);
i++;
}
私の質問の文脈は異なりますが、この質問は私の以前の投稿に関連しています。そこで実際のプログラムのコードを確認できます。