5

Java Code から C Code を正常に実行しましたが、C Program が Java Code から実行されている 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();
        }
    }
}

では、C 変数に値を入力できるように、Java コードでどのような変更を行う必要があるのでしょうか。前もって感謝します

4

1 に答える 1

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 でその文字列を stdin から読み取ります。

于 2013-05-20T10:55:36.383 に答える