我正在开发一个项目我需要在Windows操作系统中获取进程的旧PID。
旧PID表示在系统重启之前给予特定进程的PID(例如记事本被赋予PID 100)。现在重新启动系统后,我需要较旧的PID(100)并再次启动该过程。
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("C:\\Windows\\notepad.exe");
这是我的示例代码,请尽可能提供解决方案或以任何其他方式我可以恢复旧PID和旧流程。
答案 0 :(得分:1)
在unix系统上,通常的做法是在与启动和停止应用程序的脚本相同的目录中创建一个名为.pid
的简单文本文件。它包含正在运行的进程的pid
个数。
如果应用程序崩溃(或系统重新启动而未完全关闭),.pid
文件将保留。
重新启动应用程序时,虽然.pid
文件中包含的pid编号从操作角度来看不再相关,但知道进程崩溃(或者至少没有完全关闭)可能很方便 - 通常,操作的start
脚本将检查.pid
文件,并且在手动删除此文件之前不会启动应用程序。
所以你可以在你的情况下做类似的事情。您需要“包装”进程/服务启动和关闭以促进此操作。
答案 1 :(得分:0)
您应该存储打开的应用程序列表(名称/ exe路径),而不是它们的PID,因为旧的PID在进程终止/中止后将毫无意义。重新启动应用程序后,操作系统将分配一个新的PID,您作为程序员将无法控制。