Python 通过 pid 监控进程
Python monitor process by pid
我正在寻找比我更好的想法,或者您可以告诉我我在哪里犯了错误。我正在尝试做什么。
- 我尝试 运行 使用子进程和线程处理它 运行 很好,这里没有发现错误,Linux 中的命令有一个超时。
- 我得到了 pid
3.Than 我想通过 pid 监控进程,当它完成后做一些事情
def monitor_func(my_obj):
print(my_obj.process_pid)
sleep(20)
while os.kill(my_obj.process_pid, 0) is None:
print("proc is running")
try:
os.kill(my_obj.process_pid, 0)
except OSError:
continue
else:
print("proc is stopped")
问题是什么? While 循环无限工作。 os.kill(my_obj.process_pid, 0) 总是 returns NONE
提前致谢!
不确定我的理解是否正确,但我假设您正在尝试确定某些进程是否仍然 运行 由 PID。
您的代码的主要问题是 os.kill
不返回任何值,因此您将始终得到 None
。所以循环永远不会停止。
考虑以下几点:
def monitor_func(pid): # no need to pass the object as we aren't using it
print(pid)
while True:
try:
os.kill(pid, 0) # 0 doesn't send any signal, but does error checks
except OSError:
print("Proc exited")
else:
print("Proc is still running")
sleep(20)
假设您使用正确的 PID 并具有适当的权限,这将主要起作用。
我正在寻找比我更好的想法,或者您可以告诉我我在哪里犯了错误。我正在尝试做什么。
- 我尝试 运行 使用子进程和线程处理它 运行 很好,这里没有发现错误,Linux 中的命令有一个超时。
- 我得到了 pid 3.Than 我想通过 pid 监控进程,当它完成后做一些事情
def monitor_func(my_obj):
print(my_obj.process_pid)
sleep(20)
while os.kill(my_obj.process_pid, 0) is None:
print("proc is running")
try:
os.kill(my_obj.process_pid, 0)
except OSError:
continue
else:
print("proc is stopped")
问题是什么? While 循环无限工作。 os.kill(my_obj.process_pid, 0) 总是 returns NONE 提前致谢!
不确定我的理解是否正确,但我假设您正在尝试确定某些进程是否仍然 运行 由 PID。
您的代码的主要问题是 os.kill
不返回任何值,因此您将始终得到 None
。所以循环永远不会停止。
考虑以下几点:
def monitor_func(pid): # no need to pass the object as we aren't using it
print(pid)
while True:
try:
os.kill(pid, 0) # 0 doesn't send any signal, but does error checks
except OSError:
print("Proc exited")
else:
print("Proc is still running")
sleep(20)
假设您使用正确的 PID 并具有适当的权限,这将主要起作用。