【问题标题】:how to get stdin and stdout of a running c program如何获取正在运行的 c 程序的标准输入和标准输出
【发布时间】:2012-07-30 13:10:35
【问题描述】:

我想用java编写一个管理器程序,它将执行一个c程序并可以读取它的输入流并写入输出流。

客户端将请求 c exe 然后服务器将处理它的请求,如下所示:

  1. 管理器程序将执行。
  2. 它将执行一个 c 程序。
  3. 可以将c程序的输出发送到浏览器。(输入流)。
  4. 应该能够接受来自浏览器的输入并提供给 c 程序。

我曾尝试使用运行时和进程执行 c 代码。但它给出了例外

---------------------------
16 bit MS-DOS Subsystem
---------------------------
Error while setting up environment for the application. Choose 'Close' to terminate the application.
---------------------------
Close   
---------------------------

帮助?

代码: 导入 java.io.*;

class Dev
{
public static void main(String args[])
{
    try
    {
        Process p = Runtime.getRuntime().exec("dev.exe");
        InputStream is = p.getInputStream();
        // from her i'll do the stuff but it gives error.

    }
    catch(Exception e)
    {
        System.out.print("\n\n\t Error : "+e);
    }
}
}

【问题讨论】:

  • 如果您需要帮助,您必须向我们展示代码。

标签: java c


【解决方案1】:

您可以通过创建一个实现Runnable 的类来执行程序,然后将Process 传递给它,这在this answer 中进行了描述。那里的答案还描述了如何在InputStream 中获取进程的输出。至于传入一些输入,这可以通过在命令行中传递一个字符串来完成。在该答案的Process-making 行上,您可以添加:

//...
String someInput, command; // Set these to the appropriate values.
Process p = Runtime.getRuntime().exec("echo \"" + someInput + "\"|" + command);
//...

这会将someInput 的值传递给command。这是基于命令行的,并且在技术上是特定于平台的,但应该可以在 Linux、OS X 和 Windows 上运行而无需更改。

【讨论】:

    猜你喜欢
    • 2011-12-31
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 2021-03-03
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多