使用getchar()从C程序获取Java标准输出时遇到问题

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之后添加一个权限,我从来没有从输入流中获得任何东西.有什么想法吗?

谢谢

Dav*_*son 1

正如凯尔(Kyle)所说,您可能需要在调用 print 之后刷新输出流,以确保字符实际上没有延迟地进入标准输出。您应该在两个程序中执行此操作。这可以在 C 中完成fflush(stdout);,也可以在 Java 中完成,例如System.out.flush().

- 大卫