Я работаю над проектом по созданию оболочки на Python, и одной из важных функций является возможность приостанавливать и запускать запущенный подпроцесс. Однако единственные методы, которые я нашел для приостановки подпроцесса, по-видимому, мгновенно убивают его, поэтому я не могу возобновить его позже. Наша группа попыталась исключить KeyboardInterrupt:
try:
process = subprocess.Popen(processName)
process.communicate()
except KeyboardInterrupt:
print "control character pressed"
а также с помощью сигналов:
def signal_handler(signal,frame):
print 'control character pressed'
signal.signal(signal.SIGINT, signal_handler)
process.communicate()
Другая проблема заключается в том, что оба они работают только при нажатии Ctrl-C, больше ничего не действует (я думаю, именно поэтому подпроцессы убиваются).
SIGSTOP/SIGCONT
(см. Задания и сеансы)? - person jfs   schedule 12.11.2013