[英]Run execute file in Runtime.exec() and get user input
如何使用Java Runtime().exec()
用户输入来运行c执行文件。 在我的c程序中没有用户输入的情况下,执行文件在Runtime().exec()
中Runtime().exec()
:
例如:在c程序下面,如果n是预定义的,并且它的执行文件在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
有多种方法可以执行此操作,具体取决于您要实现的目标:
最简单的方法是将n
作为命令行参数传递。
您可以让C程序从其标准输入...中读取n
,然后使用Process
对象的getOutputStream
方法从Java端对其进行写入。
您可以将C程序打开“ / dev / console”或“ / dev / tty”,然后从中读取n
。 我相信在Windows上,您可以通过其他方式执行此操作。
好。 鉴于此,您只需要调用p.getInputStream()
,将输入写入该流,然后关闭该流,然后再尝试读取命令的输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.