簡體   English   中英

子流程管理-殺死子流程

[英]Subprocess management - Killing a subprocess

我一直試圖制作一個可以在Mac OS X上播放的python腳本,並且已經在Terminal中將其與.py腳本一起使用,但是我無法停止它。 我已經嘗試了數周的os.kill()process.terminate() ,這是我在其他StackOverflow問題上可以找到的所有東西。 這是我的代碼,有人可以告訴我終止該子流程的正確方法嗎? (我相信我正在使用python 2.7)

import time
import subprocess

subprocess.call(["afplay", "/Users/0095226/Desktop/introsong.wav"])
time.sleep(4)
(WHATEVER KILLS IT HERE PLEASE)

您需要使用subprocess.Popen(),因為您可以將進程句柄分配給變量,然后將其殺死。

import time
import subprocess

p = subprocess.Popen(["calc"])
time.sleep(4)
p.kill()

另一種方法是使用os.kill()具有沿signal.SIGINT殺死的過程中,如這里看出:

import time
import signal
import subprocess
import os

p = subprocess.Popen(["calc"])
time.sleep(4)
os.kill(p.pid, signal.SIGINT)

我們能夠訪問PID(進程ID),因此可以使用os.kill()os.kill() signal是包含有關如何終止進程的代碼的模塊,例如,向其發送中止(SIGABRT),中斷(SIGINT)等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM