擅长:python、mysql、java
<p>我假设您的C应用程序显示一个提示,并希望用户在同一行输入他们的输入,并且在上面的<code>readline()</code>调用中,您试图获得提示。在</p>
<p>如果是这种情况,<code>readline()</code>将永远阻塞,因为它正在等待换行符,而从未看到它。如果您将这个调用转换为一个简单的<code>read(X)</code>(其中<code>X</code>是一次读取的字节数),那么您可能会有更好的运气,尽管您应该处理部分输入(即循环收集输入,直到您看到整个提示)。您可能看到的另一个问题是C应用程序是否在提示用户之前刷新输出,但是如果是这样的话,我希望您在交互会话中也能看到这个问题。在</p>
<p>当在像Apache这样的web服务器环境下运行时,使用<code>subprocess</code>这样的东西通常是个坏主意,因为它们涉及到派生额外的进程,这通常是一件非常棘手的事情。这是因为fork进程复制了父进程的大部分状态,有时这会导致问题。我不是说它行不通,我只是说如果你不小心,你会给自己制造一些微妙的问题,如果这就是你在使用<code>subprocess</code>时遇到麻烦的原因,我也不会感到惊讶。在</p>
<p>不过,为了提供更多有用的建议,您需要准确描述调用子流程时看到的错误。例如,很有可能会抛出一个异常,它可能会出现在您的web服务器日志中,在这里重现这个异常将是一个很好的开始。在</p>