2

Java でユーザー入力を使用して c execute file を実行する方法Runtime().exec()。私のCプログラムでユーザー入力がなければ、実行ファイルは次の場所で実行されますRuntime().exec()

例: 以下の c プログラムは、n が事前定義されていて、その実行ファイルが Java ランタイム () で実行されている場合... 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 プログラムに書き込むことができます。

  • C プログラムで「/dev/console」または「/dev/tty」を開きn、そこから読み取ることができます。Windows では、他の方法でこれを行うことができると思います。


わかった。それを考えると、コマンドの出力を読み取ろうとする前にp.getInputStream()、 を呼び出し、そのストリームに入力を書き込み、それを閉じるだけです。

于 2013-05-15T10:21:02.613 に答える