我以这种方式创建子流程:
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或使用多处理模块执行的命令 当我执行时: 它给了我运行此命令的subshell的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、控制台和终端的字符集。 现在我创建一个来运行程序,并使用要读取输出,如何为进程找到正确的字符集(是正确的,但似乎不是通用的)?