gpt4 book ai didi

sockets - 为什么写入未连接的套接字会先发送 SIGPIPE?

转载 作者:行者123 更新时间:2023-12-02 17:06:00 25 4
gpt4 key购买 nike

POSIX环境中可能出现的错误有很多。为什么其中一些(特别是写入未连接的套接字)会以信号的形式得到特殊处理?

最佳答案

这是设计使然,因此当消费者死亡时,在管道中使用的生成文本(例如 find、grep、cat)的简单程序也会死亡。也就是说,如果您正在运行类似 find | 的链。查询 | sed | head,head 一旦读到足够多的行就会退出。这将用 SIGPIPE 杀死 sed,用 SIGPIPE 杀死 grep,用 SIGPIPE 杀死 find。如果没有 SIGPIPE,天真的编写的程序将继续运行并生成没有人需要的内容。

如果您不想在程序中获得 SIGPIPE,只需调用 signal() 即可忽略它。之后,像 write() 这样遇到损坏的管道的系统调用将返回 errno=EPIPE。

关于sockets - 为什么写入未连接的套接字会先发送 SIGPIPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1583871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com