为什么文件输入会在读取时抛出EAGAIN?

时间:2012-08-22 19:40:46

标签: c++ unix

我有一个程序从文件读入,在输入上做一些工作,然后将它输出到套接字。它已经运行了一个多月,突然我开始得到错误11(EAGAIN?)错误杀死该程序。当我启动程序的32个实例时,更多的一半会在几分钟内死于EAGAIN消息。我从来没有把文件设置为非阻塞,除此之外输入文件如何阻塞,数据总是不存在呢?我对此代码所做的唯一更改是禁用sigpipe信号,以避免程序在套接字连接丢失时死亡。

请原谅我没有发布代码,但我无法复制和粘贴,而且代码有点散布。它就像在一行上打开文件并稍后调用readline(file,inputString)一样简单。

感谢。

1 个答案:

答案 0 :(得分:2)

EAGAIN表示读取已被信号中断,应重新启动。

我认为这是SIGPIPE曾经直接杀死你的程序,现在被处理(即使处理是什么都不做)。