【发布时间】:2011-06-26 11:55:15
【问题描述】:
我有一些使用 stdio 进行输入和输出的旧 C++ 代码。该代码还通过分叉生成新进程。它将 stdio 重新映射到每个新进程,以便每个会话获取其各自的数据。
我正在研究使用 Java 中的线程来创建子进程。但是,在找出如何在创建时将 System.in 、 System.out 和 System.err 重新映射到子线程时,我陷入了困境。
如果可能的话,谁能指出我正确的方向?
【问题讨论】:
-
线程与进程不同,你不能用它们“创建子进程”。它们共享相同的数据,包括 stdio 的东西。如果从一个线程重新映射它,它将影响所有线程。
-
我的意思是 java 似乎没有诸如 fork() 之类的方法,所以我想知道是否可以使用线程而不是进程来执行任务。也许一个 .exec() 是要走的路,但是,我可以用同样的方式重新映射 stdio 吗?
-
有同样情况的朋友可以看看这个答案来寻找灵感:stackoverflow.com/a/15526391/363573.
标签: java multithreading fork stdio