0
我有一個腳本(簡化如下),啓動另一個python進程。我知道當前進程和子進程的進程名稱和PID。Python - 終止子進程或PID?
當我試圖終止子進程 - 菜單選項(2) - 我得到消息「分配之前引用的本地變量」py_process「。
建議終止此過程?這是一個變量範圍問題?
編輯:將'py_process'定義爲exec_menu()內部的全局變量。 :-)
#!/usr/bin/env python
import os, sys
import subprocess
## Path Variables ##
pyTivoPath="c:\pyTivo\pyTivo.py"
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
## Main Menu ##
def main_menu():
print "\nmyPID: %d\n" % (os.getpid())
print "1. Start pyTivo"
print "2. Stop pyTivo"
choice=raw_input ("\nSelect: ")
exec_menu(choice)
return
## Menu Action ##
def exec_menu(choice):
gobal py_process
if choice=="1":
print "\nStarting pyTivo..."
from subprocess import Popen, PIPE, STDOUT
py_process = subprocess.Popen(pyTivoPath, shell=True, stdout=PIPE, stderr=subprocess.STDOUT)
newPID=py_process.pid
print "newPID: %d" % (newPID)
elif choice=="2":
print "stopping pyTivo"
py_process.terminate()
else:
exit()
return
## Main Loop ##
main_menu()
raw_input("\nPress Enter to continue...")
main_menu()
感謝凱文,這就是我的想法。但我最初的嘗試是從外部exec_menu聲明全局變量,這並沒有幫助。在您回覆之前,我不確定我是否在正確的道路上。我把全局移到exec_menu裏面,一切都很開心。 - 謝謝! –