私はPythonサーバースクリプトで2つのサブプロセスを実行しています。サブプロセスの目的は、私のラズベリーパイからビデオをストリーミングすることです。別のコマンドでサブプロセスをkillする方法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