C 在Linux中使用tee()函数时确定读取器已关闭
当使用系统调用将数据从一个管道移动到另一个管道时,如果输入管道上的写入程序关闭,它将返回0,但如何识别输出管道上的读卡器是否已关闭?对于后代,答案似乎是C 在Linux中使用tee()函数时确定读取器已关闭,c,linux,C,Linux,当使用系统调用将数据从一个管道移动到另一个管道时,如果输入管道上的写入程序关闭,它将返回0,但如何识别输出管道上的读卡器是否已关闭?对于后代,答案似乎是tee()将返回-1表示错误,将errno设置为EPIPE时,管道的读取器已将其关闭,即使手册页中未对此进行记录。相应地,将生成一个SIGPIPE,因此如果您重视程序继续执行,请确保正确处理它。处理SIGPIPE的另一种方法是忽略它;然后,与write()相关的调用返回一个错误,并指出errno设置为EPIPE的问题。如果tee()。
tee()
将返回-1表示错误,将errno
设置为EPIPE时,管道的读取器已将其关闭,即使手册页中未对此进行记录。相应地,将生成一个SIGPIPE,因此如果您重视程序继续执行,请确保正确处理它。处理SIGPIPE的另一种方法是忽略它;然后,与write()
相关的调用返回一个错误,并指出errno
设置为EPIPE的问题。如果tee()。