写入数据报套接字是否可以提高SIGPIPE?

| 我正在使用一些代码,由于ѭ0的缘故,这些代码需要确保不会杀死调用者,但是它正在执行的唯一套接字写入数据报套接字(UDP和Unix域数据报套接字)。我需要担心
SIGPIPE
吗?我在套接字上使用了ѭ2but,但是(在Linux上)初步测试表明,如果没有人在Unix域套接字上进行监听,那么我在发送时就得到了
ECONNREFUSED
。不确定UDP会发生什么。 我可以将整个程序包装在hack中,以消除ѭ0的问题,但是如果不是问题,我宁愿节省开销并降低代码复杂度。     
已邀请:
答案在
send
的规范中:   [EPIPE]该套接字已关闭以进行写入,或者该套接字处于连接模式并且不再连接。在后一种情况下,如果套接字的类型为SOCK_STREAM或SOCK_SEQPACKET,并且未设置MSG_NOSIGNAL标志,则将SIGPIPE信号生成到调用线程。 http://pubs.opengroup.org/onlinepubs/9699919799/functions/send.html 因此,不,对数据报套接字的写操作不会产生“ 0”或“ 7”错误。     
开放的团体是一回事,苹果是另一回事。 写入死的UDP套接字时,绝对有可能在iOS上获得SIGPIPE,正如我最近的一些崩溃日志所揭示的那样。 iOS倾向于在应用程序处于后台时关闭UDP套接字,写入这些套接字会弹出SIGPIPE。 从我的崩溃日志中(由testflightapp提供):   最新受害者事件   SIGPIPE   2 libsystem_c.dylib 0x32df47ec _sigtramp + 48   3个即时通话0x0005b10e-[IPRSNetDatagramSocket send:size:to:](iprs_iphone_net.m:671)... 不要回想起在Linux,Solaris或Windows上发生的情况-尽管我从未尝试过关闭套接字然后再对其进行写入。     
根据我的Debian盒子上的
man 2 write
, EPIPE:fd连接到读数端关闭的管道或插座。发生这种情况时,写入过程还将收到SIGPIPE信号。 (因此,写               仅当程序捕获,阻止或忽略此信号时,才能看到返回值。) 似乎可以在写入套接字时获得SIGPIPE,但是尚不清楚它是否可以专门用于UDP套接字。     

要回复问题请先登录注册