写入前如何检查管道是否打开?

写入前如何检查管道是否打开?,第1张

写入前如何检查管道是否打开?

正确的方法是测试的返回码,

write
然后还要检查
errno

if (write(pipe, msg, strlen(msg)) == -1) {    if (errno == EPIPE) {            }}

但是请稍等:写入封闭的管道不仅会返回-1

errno=EPIPE
,而且还会发送一个
SIGPIPE
终止进程的信号

EPIPE fd连接到读数端关闭的管道或插座。发生这种情况时,写入过程还将收到SIGPIPE信号。

因此,在进行测试之前,您还需要 忽略

SIGPIPE

if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)    perror("signal");


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5015422.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存