当前位置: 首页 > 面试题库 >

获取Java中的子进程ID

邓仲卿
2023-03-14
问题内容

我以这种方式创建子流程:

String command = new String("some_program");

Process p = Runtime.getRuntime().exec(command);

如何获取该子进程ID?

PS我正在Linux上工作。


问题答案:

仍然没有为此的公共API(请参阅http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244896),但是有解决方法。

第一个解决方法是使用像这样的外部程序,ps并使用Runtime.exec()来调用它以获得pid :)

另一个基于以下事实:java.lang.Process该类是抽象的,并且实际上根据您的平台会得到一个具体的子类。在Linux上,您将获得一个java.lang.UnixProcess带有私有字段的int pid。使用反射,您可以轻松获得此字段的值:

Field f = p.getClass().getDeclaredField("pid");
f.setAccessible(true);
System.out.println( f.get( p ) );


 类似资料:
  • 问题内容: 我正在使用python的多处理模块来生成新进程 如下 : 我想获取iostat命令的pid或使用多处理模块执行的命令 当我执行时: 它给了我运行此命令的subshel​​l的pid。 任何帮助都是有价值的。 提前致谢 问题答案: 你可以使用psutil:

  • 问题内容: 是否可以从Shell脚本中的父进程ID获取子进程ID? 我有一个要使用Shell脚本执行的文件,这会导致一个新进程 process1 (父进程)。这个 过程1 已经分叉的另一个进程 过程2 (子进程)。使用脚本,我可以使用以下命令获取 process1 的pid : 但我无法获取子进程的pid。 问题答案: 只需使用:

  • 是否可以从外壳脚本中的父进程ID获取子进程ID? 我有一个要使用shell脚本执行的文件,这会导致一个新的进程process1(父进程)。此进程1已经派生了另一个进程process2(子进程)。使用脚本,我可以使用以下命令获得进程1的pid: 但是我无法获取子进程的pid。

  • 问题内容: 如何查看Java进程中的线程数? 问题答案: 调试Java程序的有用工具,它提供了线程数和其他有关线程的信息:

  • 本文向大家介绍Java如何获取当前进程ID以及所有Java进程的进程ID,包括了Java如何获取当前进程ID以及所有Java进程的进程ID的使用技巧和注意事项,需要的朋友参考一下 首先是获取当前Java运行的Java进程ID,这个是网上常见的,也就是Java程序自身将进程ID打印出来: 运行结果: ManagementFactory是一个在运行时管理和监控Java VM的工厂类,它能提供很多管理V

  • Charset.defaultCharset()和file.encoding是JVM的字符集,而不是OS、控制台和终端的字符集。 现在我创建一个来运行程序,并使用要读取输出,如何为进程找到正确的字符集(是正确的,但似乎不是通用的)?