2

如何在 Java 中使用用户输入运行 c 执行文件Runtime().exec()。在我的 c 程序执行文件中没有用户输入的情况下运行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    
4

1 回答 1

1

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

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

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

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


好的。鉴于此,您只需要调用p.getInputStream(),将输入写入该流,然后关闭它……然后再尝试读取命令的输出。

于 2013-05-15T10:21:02.613 回答