У меня есть скрипт python, который ждет некоторых заданий и выполняет их в потоках (используя subprocess.Popen
с shell=True
). Когда я запускаю скрипт в оболочке и пытаюсь завершить его с помощью 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? 'kill -s SIGINT pid' из оболочки? –
Да, именно так я послал сигнал. Результат был другим по сравнению с использованием Ctrl-C – Rok