我正在尋找比我更好的想法,或者你可以告訴我我在哪里犯了錯誤。我正在嘗試做的事情。
- 我嘗試使用子行程和執行緒運行行程,它運行良好,沒有發現任何錯誤,Linux 中的命令有超時。
- 我得到了 pid 3。比我想通過 pid 監控 proc,當它完成后做一些事情
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) 總是回傳 NONE 提前謝謝你!
uj5u.com熱心網友回復:
不確定我是否正確,但我假設您正在嘗試確定某個行程是否仍在通過 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 并具有適當的權限,這將主要作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/428047.html
標籤:linux python-2.7
上一篇:模塊已安裝但未匯入
