假设在 Java 中我有一个简单的 Echo 客户端/服务器对。我启动了服务器进程,但从未真正启动过客户端进程。
我想做的是有第三个程序(称之为“Parent”),它会在闲置 30 秒后自动终止该服务器程序。
我可以使用 Powershell 来执行此操作吗?或者我需要使用 C 或其他编程吗?
最佳答案
是的,只要你有一个好的方法: 1)唯一标识服务器进程 2)判断服务器空闲
如果永远不会有两个(或更多)服务器进程实例,那么您可以通过名称来标识进程(确保您的进程具有唯一的名称!)
确定服务器空闲可能很棘手(因此实现服务器自行停止而不诉诸“父”进程的注释)。但是,如果服务器在 Activity 时是内存或 CPU 密集型的,您可以利用它来区分空闲和繁忙。您可以使用 get-process (gps)
来确定进程当前的 CPU 和内存使用情况。诀窍是如果它当前看起来空闲,就知道它已经空闲了多长时间。为了可靠地做到这一点,您需要比服务器处理请求的频率更频繁地轮询 gps
。否则,您可能会在服务器繁忙之前轮询,然后服务器繁忙,然后在服务器空闲时再次轮询。但你会认为它一直闲置。
您可以通过让服务器在知道自己已空闲 30 秒后更改某些内容(例如窗口标题)来避免上述困境。 (但是如果你这样做,为什么不让服务器自行终止呢?)
一旦 PS 脚本确定服务器空闲,则 get-process -name yourServerProcess|stop-process
将停止服务器进程。指定“yourServerProcess”,末尾不带 .EXE。如果出现权限错误,请以管理员身份运行 PS。
关于java - 如何杀死一个挂起的 Java 程序(在 Windows 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687091/