带有send()的SIGPIPE

时间:2017-02-10 01:14:43

标签: c

在C with this code中,我收到了send的SIGPIPE:

        if ( ( nWrite = send( d->descriptor, txt + iStart, nBlock, 0 ) ) < 0 )

完整的回溯:

Program received signal SIGPIPE, Broken pipe.
0xb7fe37f2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#0  0xb7fe37f2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0xb7d654a1 in send () from /lib/libc.so.6
#2  0x08085646 in write_to_descriptor (d=0x97a6028, txt=0x8316b28 "Idle timeout... disconnecting.\n\r", length=32) at comm.c:1750
#3  0x080828a8 in game_loop () at comm.c:823
#4  0x08081b49 in main (argc=2, argv=0xbffffb54) at comm.c:425
(gdb) f 2
#2  0x08085646 in write_to_descriptor (d=0x97a6028, txt=0x8316b28 "Idle timeout... disconnecting.\n\r", length=32) at comm.c:1750
1750            if ( ( nWrite = send( d->descriptor, txt + iStart, nBlock, 0 ) ) < 0 )

变量信息:

(gdb) p nWrite
$4 = 0

(gdb) p d->descriptor
$5 = 14

(gdb) p txt
$6 = 0x8316b28 "Idle timeout... disconnecting.\n\r"

(gdb) p iStart
$7 = 0

(gdb) p nBlock
$8 = 32

我是否应该在这里考虑一个封闭的套接字进行特定的ifcheck?

我已经在游戏循环中使用了这个:

signal( SIGPIPE, SIG_IGN );
signal( SIGALRM, caught_alarm );

0 个答案:

没有答案