C++ 为什么bash没有';请不要打印“;“断管”;进程死机后的日志?
我的客户端将循环发送包到服务器。客户端程序无法捕获SIGPIPE。 (客户端操作系统是ubuntu服务器12.04 LTS) 我做以下测试:C++ 为什么bash没有';请不要打印“;“断管”;进程死机后的日志?,c++,c,linux,bash,ubuntu,C++,C,Linux,Bash,Ubuntu,我的客户端将循环发送包到服务器。客户端程序无法捕获SIGPIPE。 (客户端操作系统是ubuntu服务器12.04 LTS) 我做以下测试: 3次握手结束后。然后客户端将向服务器发送一些包。 服务器可以正常接收包 然后我突然终止了服务器进程 客户端进程已停止。但我没有看到任何日志显示“断管” 我想狂欢会会报告死亡原因 为什么bash在进程停止后不打印“断管”日志 但是我使用gdb启动这个过程,重复上面的步骤。进程死机,gdb显示以下日志: “程序收到信号SIGPIPE,管道破裂。”如果客户端未捕
“程序收到信号SIGPIPE,管道破裂。”如果客户端未捕获SIGPIPE,则它可能无法打印错误消息!“断管”形式的消息由接收SIGPIPE的程序打印,以响应写入错误或作为对信号的响应。由于您的客户端没有处理SIGPIPE,所以它不会打印该错误消息,而只是终止。当您在gdb中运行时,gdb会告诉您子进程由于SIGPIPE而终止。也许分析是正确的,但措辞很糟糕。我无法想象一个进程会用这个错误消息来响应SIGPIPE。更典型的是忽略SIGPIPE并在写入失败后报告错误。始终检查写入的返回值!