C 忽略单个popen的SIGPIPE';d文件*

C 忽略单个popen的SIGPIPE';d文件*,c,popen,sigpipe,C,Popen,Sigpipe,我看到的代码如下: Sparkle就像一个插件。它可以在多线程程序中实例化。因此,我不想调用signal(SIGPIPE,SIG_-IGN)(即忽略所有SIGPIPE),因为谁知道其他线程在做什么/期望什么 如何禁用通过popen打开的一个文件指针的SIGPIPE信号?如果您用于编写插件的规范没有指定您必须执行的操作,我看不到您可以使用pipe()执行任何操作。解决此问题的一个可能方法是使用socketpair()和fdopen()编写一个popen()等价物。我不理解第一句话,但会查找soc

我看到的代码如下:

Sparkle就像一个插件。它可以在多线程程序中实例化。因此,我不想调用signal(SIGPIPE,SIG_-IGN)(即忽略所有SIGPIPE),因为谁知道其他线程在做什么/期望什么


如何禁用通过popen打开的一个文件指针的SIGPIPE信号?

如果您用于编写插件的规范没有指定您必须执行的操作,我看不到您可以使用pipe()执行任何操作。解决此问题的一个可能方法是使用socketpair()和fdopen()编写一个popen()等价物。

我不理解第一句话,但会查找socketpair。谢谢,所以你连一双袜子都买不到sigpipe?我找不到该信息。对于socketpair,您可以使用send()调用,并且send()可以(至少在BSD上)将MSG_NOSIGNAL作为标志参数,这会导致它不传递SIGPIPE。