私のプログラムには、パイプで接続されたメイン ファイルとヘルパー ファイルがあります。メイン ファイルは stdin を介してヘルパー ファイルに書き込み、ヘルパーは stdout によってメイン ファイルに書き込みます。ヘルパー ファイルは、フォークによるメインの子プロセスであり、exec を実行します。標準入力から読み取っているときに、パイプが閉じているかどうかをヘルパーメソッドで確認するにはどうすればよいですか? 現在、私は以下のコードを使用していますが、stdin の EOF が ctrl-D であるため、無限ループに陥っています。これは、メイン関数がデータの文字列 (ほとんどの場合整数) のみを送信しているため発生しません。
while (1) {
read(0, buffer, 20 );
sscanf(buffer, "%d" , &info.numAgents);
if (feof(stdin)) {
fprintf(stdout, "Handler communication breakdown.\n");
exit(4);
}
}