2

所以在我的应用程序开始时,我打电话给

signal(SIGPIPE, SIG_IGN);

我认为我的应用程序会忽略 SIGPIPE。但是,我仍然使用以下代码导致 SIGPIPE 崩溃:

write(fd, outgoingStr->c_str(), size);

其中 fd 是一个 int(文件描述符),size 是字符串的大小。我在这里做错了什么?

附带说明一下,我最近使用将该写入包装在 if 中以检查返回的错误值,并且我相信在将其删除之前我从未遇到过 SIGPIPE 崩溃。如果出现错误,if 检查除了 cout 之外什么也没做,所以我不确定它是否相关。

4

1 回答 1

2

问题最终是 GDB 将在 SIGPIPE 上停止,即使它被忽略。正常运行应用程序时,它按预期工作。

于 2012-10-16T02:36:43.837 回答