Lil*_*ily 5 c++ java persistence jvm subprocess
我使用 JavaRuntime.getRuntime().exec(command)
创建一个子进程并打印它,pid
如下所示:
public static void main(String[] args) {
Process p2;
try {
p2 = Runtime.getRuntime().exec(cmd);
Field f2 = p2.getClass().getDeclaredField("pid");
f2.setAccessible(true);
System.out.println( f2.get( p2 ) );
} catch (Exception ie)
{
System.out.println("Yikes, you are not supposed to be here");
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了 C++ 可执行文件和 Java 可执行文件(.jar 文件)。两个可执行文件都会不断地将“Hello World”打印到标准输出。
当cmd
C++ 可执行文件出现时,pid
会打印到控制台,但子进程一返回就会被终止main()
。但是,当我在 中调用 .jar 可执行文件时cmd
,子进程不会被终止,这是所需的行为。
我不明白为什么相同的Java代码,不同的可执行文件可以表现得如此不同。我应该如何修改我的代码,以便我可以在 Java 中拥有持久的子进程?
PS:我使用的是 Ubuntu 9.10 和 OpenJDK-1.6。(不知道有没有关系~)
这个领域的新手。欢迎任何建议。
百合
C++ EXE 几乎肯定被标记为控制台应用程序。我认为默认情况下,jar 将被视为 GUI 应用程序,并且会执行标准的与主进程分离的操作。
如果您将 C++ 代码转换为 GUI 应用程序,我想您会看到它的行为与 jar 类似。
归档时间: |
|
查看次数: |
260 次 |
最近记录: |