【发布时间】:2013-11-11 00:05:44
【问题描述】:
我正在开发一个用 Python 生成 shell 的项目,其中一个重要功能是能够暂停和后台运行正在运行的子进程。然而,我发现暂停子进程的唯一方法似乎会立即杀死它,所以我以后无法恢复它。 我们组已经尝试过除了 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信号一样“暂停”(参见Jobs and sessions)?
标签: python signals subprocess keyboardinterrupt