Dan*_*ger 5 c java inputstream
我正在尝试从Java调用C程序并捕获标准输出.这是我的代码:
try {
ProcessBuilder pb = new ProcessBuilder("helloworld.exe");
pb.redirectErrorStream(true); // Merge std out and std err into same stream
program = pb.start(); // Start program
BufferedReader input = new BufferedReader(new InputStreamReader(program.getInputStream()));
line = input.readLine();
while (line != null) {
System.out.println(line);
line = input.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这是一个示例c程序:
int main(){
printf("Hello world\n");
}
Run Code Online (Sandbox Code Playgroud)
当我正在执行的程序(在这种情况下为helloworld)中没有一个程序时getchar(),这很好用.但是,如果我getchar()在printf之后添加一个权限,我从来没有从输入流中获得任何东西.有什么想法吗?
谢谢
正如凯尔(Kyle)所说,您可能需要在调用 print 之后刷新输出流,以确保字符实际上没有延迟地进入标准输出。您应该在两个程序中执行此操作。这可以在 C 中完成fflush(stdout);,也可以在 Java 中完成,例如System.out.flush().
- 大卫
| 归档时间: |
|
| 查看次数: |
853 次 |
| 最近记录: |