我是新來的新Python編程和編程知識。 我正在設計一個代碼,它接收GTalk上的即時消息,並根據收到的消息運行一個子進程(OMXPlayer上的mp4或mp3文件)。目前我可以運行子進程,但是我無法暫停/停止mp3/mp4文件(子進程)。任何建議?Python,根據收到的消息暫停一個子進程
def message_handler(connect_object, message_node):
R = (message_node.getBody())
if R == "video" :
movie_path = '/home/pi/Desktop/media/video.mp4'
p = subprocess.Popen(['omxplayer',movie_path])
elif R == "music" :
movie_path = '/home/pi/Desktop/media/music.mp3'
p = subprocess.Popen(['omxplayer',movie_path])
elif R == "pause":
p.kill() # it gives me erroe "p is not defined"
os.kill(p.pid, signal.SIGSTOP) # doesn't do nothing
else:
pass
你是否在'message_handlers'範圍之外的其他地方定義了p? – Skurmedel
有關Skurmedel的更多細節。每次調用'message_handler'時都會重新定義「p」。您希望將'subprocess.Popen'保存在具有更多永久性作用域的地方,以便暫停消息可以找到適當的子進程。請注意存在多個子流程(一次播放多個視頻)的可能性,因此您需要一些方法來跟蹤它。 – mpez0