如何獲取由Runtime.getRuntime().exec
產生的進程的ID?如何在java中獲取進程的id?
2
A
回答
0
編輯 - 正如Brian指出的那樣,得到的是正在運行的進程的ID,而不是生成的進程的ID。
,我能想到的第一方案,會是這樣的:
ManagementFactory.getRuntimeMXBean().getName();
,你會得到這樣的:18306 @本地。 18306是進程ID。
1
這將是環境/操作系統特定的。
如果你在Unix上,你可以寫一個腳本來輸出進程ID,然後exec
執行您所需的過程。該進程將替換進程表中的腳本並使用相同的進程ID運行。例如
#!/bin/sh
echo $$
exec 'your program here'
因此,您的父Java進程可以產生這種情況,讀取輸出,第一行是您的進程ID。
+0
+1,這是獲得pid的正確方法 – 2010-09-14 11:53:41
0
有一個API,它允許您查詢從Java進程列表:Sigar。它看起來很商業化,但它實際上是GPL。如果你有關於你產生的進程的一些細節,你可能會掀起一個Sigar查詢來返回你的pid。
這是跨平臺的。
相關問題
- 1. 如何在java中獲得進程ID?
- 2. 如何在FreeBSD的命令行中獲取java進程的進程ID,sh
- 3. 如何在Erlang shell中獲取當前進程的進程ID?
- 4. 如何在erlang中獲取調用進程的進程ID?
- 5. 如何在linux中通過進程名獲取進程ID
- 6. 如何獲取所有進程ID?
- 7. C++如何獲取父進程ID
- 8. 如何從IAudioSessionManager2獲取進程ID
- 9. 如何在drools中的java程序中獲取演員ID?
- 10. 獲取Scala.sys.process.Process的進程ID
- 11. 獲取PowerShell進程的進程ID
- 12. 如何獲取通過execvp啓動的進程的進程ID()
- 13. 如何獲取特定進程的進程ID?
- 14. 如何通過進程ID獲取進程的stdin?
- 15. 從進程名稱獲取進程ID
- 16. 從子進程獲取父進程ID
- 17. 正確獲取進程ID
- 18. 獲取子進程ID
- 19. 如何在OS X中使用objective c獲取父進程ID?
- 20. 如何從進程名稱獲取進程ID?
- 21. 如何從進程ID獲取進程句柄?
- 22. 如何在shell腳本中從分叉子進程獲取進程ID(pid)
- 23. 在solaris內核模塊中獲取進程ID和父進程
- 24. 如何獲取Python中傳入信號的進程ID?
- 25. 如何通過Excel中的對象獲取進程ID#
- 26. 如何在Java中的線程之間傳遞進程ID?
- 27. shelljs - 獲取由shelljs.exec()創建的進程的進程ID()進程
- 28. 如何獲取Java進程中的線程數
- 29. 猛砸獲取進程ID在子shell
- 30. 如何獲取所有線程ID和進程的名稱
這是正在運行的進程的進程ID,而不是生成的進程。還要注意的是,我不相信上述內容在JVM實現中是完全可靠的(我使用它,但值得注意的是一個警告) – 2010-09-14 11:33:21