2013-05-20 11 views
5

JavaコードからCコードを正常に実行しましたが、CプログラムがJavaコードから実行されているC変数に値を読み込みたい。どうやってするか?Javaコードから実行中のC変数の値を読み取る

私のCコードは次のようになります。

int main() 
{ 
    int op; 
    printf("\n Hello World... "); 
    printf("\n Enter any value : "); 
    scanf("%d",&op); 
    printf("\n The value entered is : %d",op); 
    getch(); 
    return 0; 
} 

私のJavaコードは以下の通りです。

import java.io.*; 
public class Test { 
    public static void main(String args[]) { 
     try { 
      String s = " "; 
      Process processCompile = Runtime.getRuntime().exec("e:/Sample.exe"); 

      BufferedReader stdInput = new BufferedReader(new 
      InputStreamReader(processCompile .getInputStream())); 
      // read the output from the command 
      System.out.println("EXE OUTPUT"); 
      while ((s = stdInput.readLine()) != null) { 
       System.out.println(s); 
      } 
     } catch(Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

Javaコードではどのような変更が必要なので、C変数に値を入力できます。ありがとうございます。

答えて

4

ProcessBuilderではなくJNIを使​​用する必要があります。あるいは、これらの値をファイルに書き込んでCからファイルを読み込む必要があります。あるいは、それらの値をプロセス入力ストリームに書き込む必要があります。それはあなたを混乱させるために、「outputStream」と呼ばれます。

ような何か:

OutputStreamWriter osw = new OutputStreamWriter(process.getOutputStream(), "utf-8"); 
osw.append(String.format("value1=%d value2=%d", value1, value2)); 
osw.flush(); 

、その後Cで標準入力からその文字列を読み込みます。

+0

私にこの疑似コードを教えてもらえますか? – Sankar

+1

いいえ、JNIにとっては大きな話題です。そのオプションのGoogle JNIチュートリアルファイルについては、チュートリアルは必要ありません。 – bmargulies

関連する問題