[英]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.