我有一个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