如何使用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
答案 0 :(得分:1)
有多种方法可以做到这一点,具体取决于您想要实现的目标:
执行此操作的最简单方法是将n
作为命令行参数传递。
您可以让C程序从其标准输入读取n
...并使用Process
对象的getOutputStream
方法从Java端写入它。
您可以让C程序打开“/ dev / console”或“/ dev / tty”并从那里读取n
。在Windows上我相信你可以通过其他方式做到这一点。
行。鉴于此,您只需要调用p.getInputStream()
,将输入写入该流,并在尝试读取命令输出之前将其关闭... 。