【发布时间】:2010-12-07 21:24:22
【问题描述】:
我有一个服务器应用程序在单独的线程中写入 popen("myCommand", "w") 文件描述符,如果传递给 popen() 的命令导致任何输出到 stdout 或 stderr,则我的应用程序退出.但是,这只是通过 inetd 调用我的服务器应用程序时出现的问题,如果我使用 ssh 启动服务器,则不会出现此问题。
类似地,当我的服务器应用程序在单独的线程中从 popen("myCommand2", "r") 文件描述符中读取并且传递给 popen() 的命令导致任何输出到 stderr 时(stdin 将进入我的管道),应用程序退出。同样,这只发生在 inetd 召唤,而不是 ssh 召唤。
【问题讨论】:
-
Inetd 通过重定向已启动服务器的标准 i/o 来工作。有可能你正在破坏这个。如果您可以指定服务器“退出”的方式,那将会很有帮助。它会崩溃吗?留下退出代码?
-
我不知道它是如何退出的,这是问题的一部分。我看到析构函数正在运行。我无法通过 gdb 附加,所以我不知道是什么失败了。我也没有收到任何可见的错误消息。我确实通过将 printfs 插入到代码中知道对 write() 或 read() 的调用是失败的地方。