我编写通过Linux TCP套接字进行通信的网络应用程序。最近我已经注意到发送系统调用会导致应用程序崩溃。当两个同伴都起来时它工作正常(我正在测试崩溃恢复)。但是,当一个同伴下来第二次崩溃执行这段代码。Linux TCP套接字崩溃
fprintf(stderr, "out_tcp %d\n", out_tcp);
if(send(out_tcp, &packet, sizeof(packet), 0) == -1)
fprintf(stderr, "send TCP error");
fprintf(stderr, "after send");
套接字已经准备并连接并且在第二个对等关闭之前执行了好几次。我期望这个代码返回-1值,但它只在输出产生“out_tcp 11”,然后应用程序退出。没有错误消息,没有从发送返回的值。我在Valgrind下运行它,它说应用程序正常退出 - 没有错误/警告消息。
有没有人有任何想法如何调试它?使用的工具?因为我没有收到任何信息,所以我很困惑。
在此先感谢 Harnen
您使用的信号能够帮助?你用'gdb'检查过它吗? –
Valgrind?这不是内存泄漏,在'gdb'下运行它。您可能因'SIG_PIPE'而退出。 –
[如何防止SIGPIPE或防止服务器结束?](http://stackoverflow.com/questions/6821469/how-to-prevent-sigpipe-or-prevent-the-server-from-ending) –