我知道答案取决于特定的JVM,但我想了解它通常是如何实现的?它是用popen(posix)表示的吗?在效率方面,我是否需要记住一些事情(而不是像 javadoc ). 我很想知道是否有一个关于JVM实现的一般性参考来回答这些问题。
看这张照片 source of JDK .
pid = forkAndExec(prog, argBlock, argc, envBlock, envc, dir, redirectErrorStream, stdin_fd, stdout_fd, stderr_fd); stdin_stream = new BufferedOutputStream(new FileOutputStream(stdin_fd));
有关本机代码,请参阅:
它做了一些有趣的事情! 它打开管道并将它们作为标准输入、标准输出、标准输出给子管道,管道的另一侧由父管道使用!