繁体   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