簡體   English   中英

在Runtime.exec()中運行執行文件並獲取用戶輸入

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM