2013-02-25 37 views
1

我正在使用pytest來運行測試,並且在執行測試期間,用Ctrl-C中斷。無法用^ C退出

不管我有多少次ctrl-C離開測試會話(我也試過ctrl-D離開我正在使用的環境),我的終端提示符不會返回。

我不小心按下F以及... test.py ^CF^C F是否與我被困在捕獲的stderr部分中並且提示不返回有關?

是否有任何邏輯解釋爲什麼我卡在這裏,如果是這樣,是否有任何替代方案退出此狀態而不關閉窗口並強制退出會話?

回答

5

我會建議嘗試控制-Z。這應該暫停它;你可以殺死%1(或殺死-9%1)來殺死它(假設你沒有任何其他東西在後臺運行)

我正在猜測發生了什麼(從個人經驗)是其中一個測試正在運行,除了捕獲所有異常(包括控制c觸發器的鍵盤中斷)並且在while循環內/忽略異常。

+0

(通過個人經驗,我的意思是一般的python;沒有看到你用pytest描述過的行爲) – Foon 2013-02-25 17:57:22

+0

它的價值,從不使用-9,嘗試-15,-2,然後-1 。這些信號是爲了讓這個錯誤的二進制文件在被殺之前有機會自行清理。如果你不知道你的過程需要以何種方式進行清理,那麼你有可能不希望它失去它。 http://unix.stackexchange.com/questions/8916/when-should-i-not-kill-9-a-process – 2015-12-16 15:25:26

+0

不得不不同意...引用着名軟件開發商Marge Simpson的話問道:「你想讓工作完成嗎?還是你想讓它快速完成?「,」好吧,像所有美國人一樣......快!「 (嚴肅地說,我爲control-c和kill -15(又名默認殺)編寫的一套一次性Python程序的大小不起作用,除SIGKILL以外的其他任何東西都會在零點附近...並且不要讓我開始擔心由於NFS braindamage而導致SIGKILL不起作用。) – Foon 2015-12-18 12:52:13