在我的python脚本中,我有:
os.spawnvpe(os.P_WAIT, cmd[0], cmd, os.environ)
其中cmd类似于['mail', '-b', emails,...]
,它允许我以交互方式运行mail
并在邮件完成后返回到python脚本。
唯一的问题是当我按下Ctrl-C时。似乎" mail
和python脚本都对它作出反应" (*),而我更喜欢在mail
运行时,只有mail
应该响应,并且python不应该引发任何异常。是否有可能实现它?
(*)控制台上发生的事情是:
^C
(Interrupt -- one more to kill letter)
Traceback (most recent call last):
File "./tutster.py", line 104, in <module>
cmd(cmd_run)
File "./tutster.py", line 85, in cmd
code = os.spawnvpe(os.P_WAIT, cmd[0], cmd, os.environ)
File "/usr/lib/python3.4/os.py", line 868, in spawnvpe
return _spawnvef(mode, file, args, env, execvpe)
File "/usr/lib/python3.4/os.py", line 819, in _spawnvef
wpid, sts = waitpid(pid, 0)
KeyboardInterrupt
然后邮件实际上被发送(这已经很糟糕,因为意图是杀死它),但是正文是空的,内容作为带有bin扩展名的附件发送。
答案 0 :(得分:0)
用try / except语句包装它:
try:
os.spawnvpe(os.P_WAIT, cmd[0], cmd, os.environ)
except KeyboardInterrupt:
pass