所以我有一個java程序通過ProcessBuilder調用一個C程序,並且我需要C程序在出現問題時通知Java程序。我有以下代碼爲java編:在java中讀取c程序的stdout
String cmd[] = //string to run the c program in the terminal, no probs here
ProcessBuilder builder = new ProcessBuilder(cmd);
builder.redirectErrorStream(true);
Process process = builder.start();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
System.out.println(bufferedReader.ready());
System.out.println(bufferedReader.readLine());
在給定點的c程序將不得不通知Java程序的東西。我已經嘗試了很多東西像
char Buff[] = "output";
write(0, Buff, strlen(Buff)+1);
write(1, Buff, strlen(Buff)+1);
printf("output\n");
但我不能讓Java程序讀取此,我得到的唯一輸出是
false
null
你不應該在設置流讀取器來聽取它的輸出之後啓動()處理*嗎? – Vulcan
我對這個東西一無所知,所以如果我現在很傻,請和我一起裸露,但對我來說,它看起來像你正在閱讀stderr而不是標準輸出,這聽起來像是你想閱讀...? –
它可以是'char Buff [] =「output \ n」; write(1,Buff,strlen(Buff));'或'printf(「output \ n」); fflush(stdout中);' – melpomene