Дочерний процесс получает тот же SIGINT, что и ваш родительский процесс, потому что он находится в той же группе процессов. Вы можете поместить дочерний элемент в его собственную группу процессов, вызвав os.setpgrp () в дочернем процессе. Здесь используется аргумент popen preexec_fn:
subprocess.Popen(['nohup', 'my_command'],
stdout=open('/dev/null', 'w'),
stderr=open('logfile.log', 'a'),
preexec_fn=os.setpgrp
)
(preexec_fn только для un * x-oids. Похоже, что для Windows существует "creationflags = CREATE_NEW_PROCESS_GROUP", но я никогда не пробовал.)