Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么bash没有';请不要打印“;“断管”;进程死机后的日志?_C++_C_Linux_Bash_Ubuntu - Fatal编程技术网

C++ 为什么bash没有';请不要打印“;“断管”;进程死机后的日志?

C++ 为什么bash没有';请不要打印“;“断管”;进程死机后的日志?,c++,c,linux,bash,ubuntu,C++,C,Linux,Bash,Ubuntu,我的客户端将循环发送包到服务器。客户端程序无法捕获SIGPIPE。 (客户端操作系统是ubuntu服务器12.04 LTS) 我做以下测试: 3次握手结束后。然后客户端将向服务器发送一些包。 服务器可以正常接收包 然后我突然终止了服务器进程 客户端进程已停止。但我没有看到任何日志显示“断管” 我想狂欢会会报告死亡原因 为什么bash在进程停止后不打印“断管”日志 但是我使用gdb启动这个过程,重复上面的步骤。进程死机,gdb显示以下日志: “程序收到信号SIGPIPE,管道破裂。”如果客户端未捕

我的客户端将循环发送包到服务器。客户端程序无法捕获SIGPIPE。 (客户端操作系统是ubuntu服务器12.04 LTS)

我做以下测试:

  • 3次握手结束后。然后客户端将向服务器发送一些包。 服务器可以正常接收包

  • 然后我突然终止了服务器进程

  • 客户端进程已停止。但我没有看到任何日志显示“断管”

  • 我想狂欢会会报告死亡原因

    为什么bash在进程停止后不打印“断管”日志

    但是我使用gdb启动这个过程,重复上面的步骤。进程死机,gdb显示以下日志:


    “程序收到信号SIGPIPE,管道破裂。”

    如果客户端未捕获SIGPIPE,则它可能无法打印错误消息!“断管”形式的消息由接收SIGPIPE的程序打印,以响应写入错误或作为对信号的响应。由于您的客户端没有处理SIGPIPE,所以它不会打印该错误消息,而只是终止。当您在gdb中运行时,gdb会告诉您子进程由于SIGPIPE而终止。

    也许分析是正确的,但措辞很糟糕。我无法想象一个进程会用这个错误消息来响应SIGPIPE。更典型的是忽略SIGPIPE并在写入失败后报告错误。始终检查写入的返回值!