2013-05-20 10 views
5

Ho eseguito correttamente il codice C da codice Java, ma ho una domanda riguardante, voglio leggere i valori nelle variabili C in cui C programma è in esecuzione da codice Java . Come farlo?Lettura valori in variabili C in esecuzione da Java Codice

Il mio codice C sarà il seguente.

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; 
} 

e il mio codice Java è il seguente.

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(); 
     } 
    } 
} 

Quindi, quali modifiche devo fare nel codice Java, in modo che possa valori di input alle variabili C. Grazie in anticipo

risposta

4

È necessario utilizzare JNI, non ProcessBuilder. Oppure è necessario scrivere quei valori in un file e leggere il file da C. O è necessario scrivere quei valori nel flusso di input del processo. Il che, per confonderti, si chiama 'outputStream'.

Qualcosa di simile:

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

e poi in C leggere quella stringa da stdin.

+0

Puoi darmi uno pseudo codice per questo? – Sankar

+1

No, per JNI è un grande argomento. "Tutorial JNI" di Google per questa opzione. Per un file, non è necessario un tutorial. – bmargulies