有没有一种简单的方法来检查管道在C中写入之前是否已关闭?我有一个子进程和父进程,父进程有一个写入子进程的管道.但是,如果孩子关闭管道并且父级尝试读取 - 我收到管道损坏的错误.
那么如何检查以确保我可以写入管道,所以如果我不能,我可以将其作为错误处理?谢谢!
一种简单的检查方法是对管道进行0字节写入(2)并检查返回.如果您正在捕获SIGPIPE或检查EPIPE,则会收到错误消息.但这就像你继续做真正的写,检查错误返回一样.因此,只需在信号处理程序(SIGPIPE)中执行写入和处理错误,或者,如果信号被忽略,则通过检查写入的错误返回来执行.