【发布时间】:2012-12-16 21:02:21
【问题描述】:
所以我有一个通过 ProcessBuilder 调用 C 程序的 java 程序,我需要 C 程序在发生某些事情时通知 Java 程序。我有以下 java prog 代码:
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
【问题讨论】:
-
你不应该
start()处理之后你设置流阅读器来监听它的输出吗? -
我对这些东西一无所知,所以如果我现在很傻,请告诉我,但对我来说,看起来你是从 stderr 而不是 stdout 读取的,这听起来像是你想要的从...读取?
-
是
char Buff[] = "output\n"; write(1, Buff, strlen(Buff));或printf("output\n"); fflush(stdout);