【发布时间】:2009-11-05 20:10:33
【问题描述】:
假设我创建了一个 socketpair() 并将其中一个套接字的 句柄 传递给一个衍生进程 (popen),该进程能否与父进程通信?
我看到的示例是使用 fork() 应用的,这超出了我当前项目的范围。
更新:我尝试了一个简单的测试:
客户端:
socketpair带套接字[0]从客户端使用
posix_spawn和sockets1 作为命令行参数客户端:
write到套接字...客户端退出而没有任何警告...
看来这个方法有问题。
更新:我还发现了这个note:
Pipes and socketpairs are limited to communication between processes with a common ancestor.
【问题讨论】:
-
@Jim:还没有……我希望这个问题能快速得到解决……
-
关于“客户端在没有任何警告的情况下退出”,perror(3)没有说什么吗?
-
@Inshallah:当我调用
write时,进程退出,所以我不能perror()。 -
@jldupont - 我不认为你的意思是客户,从字面上看,只是退出:-)。某些信号处理程序可能负责终止您的进程。尝试捕获 SIGPIPE(或其他一些,请参阅 signal(7))。此外,请确保您正在检查所有返回值是否存在错误。如果您可以发布用于测试的代码,那最好。