Ho fatto un test (purtroppo solo su linux ho potuto) e funziona
main.c (compilato con "gcc -o prova main.c")
codice:
#include <stdio.h>
int main () {
printf ("Prova\n");
}
Prova.java (avviato con "java Prova")
codice:
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Prova {
public static void main (String[] arg) throws Exception {
ProcessBuilder pb = new ProcessBuilder("./prova");
Process p = pb.start();
if (p == null)
throw new Exception("Process non inizializzato");
InputStream pis = p.getInputStream();
try (BufferedReader pbis = new BufferedReader(new InputStreamReader(pis$
String l;
while ((l = pbis.readLine()) != null) {
System.out.println(l);
}
pis = p.getErrorStream();
try (BufferedReader pbis = new BufferedReader(new InputStreamReader(pis$
String l;
while ((l = pbis.readLine()) != null) {
System.out.println("ERR: " + l);
}
}
p.waitFor();
}
}
Ovviamente l'eseguibile deve trovarsi in una cartella corretta (nella stessa base con la quale viene avviata la classe java oppure in una cartella presente nella variabile d'ambiente PATH)
Output console
codice:
root@nome:~/prova# java Prova
Prova
root@nome:~/prova#