如何获取正在运行的c程序的stdin和stdout

时间:2012-07-30 13:10:35

标签: java c

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

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

  1. 经理程序将执行。
  2. 它将执行一个c程序。
  3. 可以将c程序的输出发送到浏览器。(输入流)。
  4. 应该能够接受来自浏览器的输入并提供给c程序。
  5. 我尝试使用Runtime和Process执行c代码。但它给出了异常

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

    帮助?

    代码:     import 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);
        }
    }
    }
    

1 个答案:

答案 0 :(得分:1)

您可以通过创建实现Runnable的类来执行程序,然后将Process传递给InputStreamthis answer中对此进行了描述。那里的答案还描述了如何在Process中获得流程的输出。至于传入一些输入,这可以通过在命令行中管道一个字符串来完成。在该答案的//... String someInput, command; // Set these to the appropriate values. Process p = Runtime.getRuntime().exec("echo \"" + someInput + "\"|" + command); //... - 制作行中,您可以添加:

someInput

这会将command的值传递给{{1}}。这基于命令行,在技术上是特定于平台的,但在Linux,OS X和Windows上无需更改即可使用。