1

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

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

谢谢。

4

1 回答 1

2

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

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

于 2012-08-22T19:59:01.010 回答