对于未来的开发者而言,看起来答案是tee()函数将返回-1表示错误,并将errno设置为EPIPE,当管道读取器已经关闭时,即使这在手册中没有记录。相应地,会生成一个SIGPIPE信号,请确保正确处理它,如果您希望程序继续执行。
write()
相关的调用就会返回错误,并将errno
设置为 EPIPE,表示问题出现了。如果tee()
可以生成 SIGPIPE(很有道理),那么你必须在处理或忽略 SIGPIPE 以获得-1
和EPIPE
状态。 - Jonathan Leffler