2017-02-02 3 views
0

経由で走っ:Pythonは:プロセスには、Ctrl-Cを渡すには、私が持っている私のPythonスクリプトではos.spawnvpe

cmdが、私は対話的 mailを実行してのpythonに戻ることができます ['mail', '-b', emails,...]のようなものがある
os.spawnvpe(os.P_WAIT, cmd[0], cmd, os.environ) 

メール終了後のスクリプト。

唯一の問題はCtrl-Cを押した場合です。 mailが実行されている間に、mailだけが反応し、Pythonで例外が発生しないようにする必要がありますが、「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拡張子付きの添付ファイルとして送信されます。

try: 
    os.spawnvpe(os.P_WAIT, cmd[0], cmd, os.environ) 
except KeyboardInterrupt: 
    pass 

答えて

0

はtry/except文でそれをラップします。何らかの理由でCtrl + Cを押すと、私は今すぐbashになります。次にCtrl + Cを押すとEOTが表示されます。これはメールがメールを送信したことを意味します
+0

ない良い:Pythonは例外をスローしませんが、メールを殺すために不可能だ、それは以前のように送信される –

+0

Python以外で実行するとメールはどのように振る舞いますか?最初のCtrl-Cで – lolopop

+0

が表示されます(割り込み - 文字を殺すもう1つの割り込み)。 –

関連する問題