在Runtime.exec()中运行执行文件并获取用户输入

时间:2013-05-15 09:49:29

标签: java process runtime.exec

如何使用Java Runtime().exec()中的用户输入运行c执行文件。没有用户  我的c程序执行文件中的输入在Runtime().exec()

中运行

例如:如果n是预定义的并且它的执行文件运行,则在c程序下面  java runtime()...如果n是用户输入,如何运行执行文件?

#include <stdio.h>
#include <time.h>    
#include <unistd.h>
int main()
{
   setbuf(stdout, NULL); //set buffer null
   int i,n;
   scanf("%d",&n);
       for(i=0;i<=n;i++)
   {
    printf("%d\n",i);
    sleep(1); //delay
   }
} //main

Java代码....

import java.io.*; 
import java.lang.Runtime;
import java.lang.*;
import java.io.File;
import java.util.Timer;
import java.util.TimerTask;

public class run3
{
 public static void main(String[] args)
 {
 try
 {
 String[] cmd = {"file path"};
 Process p = java.lang.Runtime.getRuntime().exec(cmd);
 String s;
 BufferedReader stdInput = new BufferedReader(new 
                                          InputStreamReader(p.getInputStream()));
 BufferedReader stdError = new BufferedReader(new  
                                          InputStreamReader(p.getErrorStream()));

    while ((s = stdInput.readLine()) != null)
    {    System.out.println(s);    }

          System.out.println("Done.");
   }//try
  catch (IOException ex) 
  { ex.printStackTrace();   }
 } //void
} //main    

1 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点,具体取决于您想要实现的目标:

  • 执行此操作的最简单方法是将n作为命令行参数传递。

  • 您可以让C程序从其标准输入读取n ...并使用Process对象的getOutputStream方法从Java端写入它。

  • 您可以让C程序打开“/ dev / console”或“/ dev / tty”并从那里读取n。在Windows上我相信你可以通过其他方式做到这一点。


行。鉴于此,您只需要调用p.getInputStream(),将输入写入该流,并在尝试读取命令输出之前将其关闭...