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