1

ファイルから読み込み、入力に対して何らかの作業を行い、それをソケットに出力するプログラムがあります。1 か月以上正常に動作していましたが、突然エラー 11 (EAGAIN?) が表示されてプログラムが強制終了しました。プログラムの 32 個のインスタンスを開始すると、EAGAIN メッセージを受信して​​数分以内に半数以上が終了します。ファイルをノンブロッキングとして設定したことはありません。また、入力ファイルがどのようにブロックされるか以外に、データは常にそこにありますよね? このコードに加えた唯一の変更は、ソケット接続が失われたときにプログラムが停止するのを避けるために、sigpipe 信号を無効にすることでした。

コードを投稿していないことを許してください。ただし、コピーして貼り付けることができず、とにかくコードが散らばっています。ただし、1行でファイルを開き、後で readline(file, inputString) を呼び出すのと同じくらい簡単です。

ありがとう。

4

1 に答える 1

2

EAGAIN は、読み取りがシグナルによって中断され、再開する必要があることを意味します。

プログラムを直接強制終了していたのは SIGPIPE であり、現在は処理されていると思います (処理が何もしない場合でも)。

于 2012-08-22T19:59:01.010 に答える