我在Python服務器腳本中運行兩個子進程。子流程的目的是從我的Raspberry Pi流式傳輸視頻。如何用其他命令殺死子進程python
我的問題是如何殺死子進程時,另一個命令發送到服務器。我正在使用Popen()來啓動子進程。
這是我的代碼,當服務器收到命令「startStream」。我使用Twisted庫作爲服務器協議。
class Echo(Protocol):
def connectionMade(self):
#self.transport.write("""connected""")
self.factory.clients.append(self)
print "clients are ", self.factory.clients
def connectionLost(self, reason):
self.factory.clients.remove(self)
def dataReceived(self, data):
print "data is ", data
if data == "startStream":
p = subprocess.Popen("raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 &", shell=True)
pn = subprocess.Popen("LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i %s -o %s &" % (x,y), shell=True)
我想要的是這樣的。
if data == "startStream":
p = subprocess.Popen("raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 &", shell=True)
pn = subprocess.Popen("LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i %s -o %s &" % (x,y), shell=True)
elif data == "stopStream":
os.kill(p.pid)
os.kill(pn.pid)
非常感謝!
'terminate()'? – BusyAnt
問題是當調用stopStream時,p和pn不可訪問。我習慣於使用Java,在那裏我可以剛剛聲明過程爲全局變量,然後從任何地方訪問它們,但顯然這在Python中不起作用。 – Oliver
此外,該模塊沒有任何屬性終止 – Oliver