我编写了一个通过Linux TCP套接字进行通信的网络应用程序。最近我注意到,send系统调用会导致我的应用程序崩溃。当两个对等端都处于正常运行时,它可以正常工作(现在正在测试故障恢复)。但是,当一个对等端宕机时,第二个对等端执行以下代码时会崩溃。
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
检查过它? - Karoly Horvathgdb
运行它。你可能因为SIG_PIPE
而退出。 - Steve-o