我有一個python腳本,它等待一些作業並在線程中執行它們(使用subprocess.Popen
和shell=True
)。當我在shell中運行一個腳本並嘗試用Ctrl-C
來終止它時,它會正常關閉並乾淨。模擬Ctrl-C到python腳本
問題是我想運行這個腳本作爲守護進程,然後使用某種unix信號終止它。 INT
信號應該與Ctrl-C
相同,但它不能以相同的方式工作。它將運行subproces.popen
子進程。
我也嘗試在主線程中提升KeyboardInterupt
當我收到信號,但也沒有關閉腳本並殺死所有子進程。
任何建議如何模仿Ctrl-C
?呼叫到subprocess.popen
實施例:
shell_cmd = "bwa aln -t 8 file1.fasta file1.fastq.gz > file1.sam.sai"
process = subprocess.Popen(shell_cmd,
shell=True,
stderr=subprocess.PIPE)
你是如何發送INT信號的? '從shell中kill -s SIGINT pid'? – 2012-02-23 17:08:25
是的,這就是我發送信號的方式。結果與使用Ctrl-C相比有所不同 – Rok 2012-02-23 17:18:07