所以在我的应用程序开始时,我打电话给
signal(SIGPIPE, SIG_IGN);
我认为我的应用程序会忽略 SIGPIPE。但是,我仍然使用以下代码导致 SIGPIPE 崩溃:
write(fd, outgoingStr->c_str(), size);
其中 fd 是一个 int(文件描述符),size 是字符串的大小。我在这里做错了什么?
附带说明一下,我最近使用将该写入包装在 if 中以检查返回的错误值,并且我相信在将其删除之前我从未遇到过 SIGPIPE 崩溃。如果出现错误,if 检查除了 cout 之外什么也没做,所以我不确定它是否相关。