1

我有一个服务器应用程序在单独的线程中写入 popen("myCommand", "w") 文件描述符,如果传递给 popen() 的命令导致任何输出到 stdout 或 stderr,则我的应用程序退出。但是,这只是通过 inetd 调用我的服务器应用程序时的问题,如果我使用 ssh 启动服务器,则不会出现此问题。

同样,当我的服务器应用程序在单独的线程中从 popen("myCommand2", "r") 文件描述符中读取并且传递给 popen() 的命令导致任何输出到 stderr(stdin 将进入我的管道)时,应用程序退出。同样,这只发生在 inetd 召唤,而不是 ssh 召唤。

4

1 回答 1

0

您需要在打开管道之前关闭该进程的所有现有 fd,然后进行 i/o 重定向。那是因为如果 inetd,该进程作为守护进程运行。

于 2009-10-19T03:58:08.343 回答