我抓到一個CtrlC做一個清理是更正確的退出程序kill('INT', $$)
比退出程序exit()
?如何在獲取Ctrl + C後退出?
回答
按Ctrl - ç發送INT
信號到你的過程。處理,經過發送另一個INT
是沒用的:
perl -E'$SIG{INT}=sub{say "interrupted"; $c++ < 5 and kill INT => $$}; <>'
這是貫徹落實遞歸 goto的一種不尋常的方式,但沒有^C ^C ^C
量將終止程序。 (按回車鍵退出)。
如果你想exit
該程序,做到這一點(最好具有非零狀態)。
從perlmod
相關報價:
的
END
代碼塊儘可能晚地執行,也就是說,perl的運行完畢的程序和之前的解釋正在退出,即使後它由於die()
函數而退出。 (但如果它是通過exec
變形到另一個程序,或由被吹出來的水的信號,你有陷阱,自己(如果可以的話)。
即自中斷kill INT => $$
不會執行END
默認情況下,這可能源自「讓困難的事情成爲可能」的理念,除非某些退出操作需要很長時間才能運行,您仍然應該在INT
或TERM
信號上執行它們,如果用戶立即關機, KILL
。
在kill('INT',$$)'之前,我會將$ SIG {INT}設置回「DEFAULT」。 – 2013-05-12 12:38:21
@sid_com好的,在這種情況下,關鍵是你是否想要運行'END'塊。沒有幾個理由,所以'出口'仍然是可取的。 – amon 2013-05-12 13:00:11
- 1. 無法捕獲ctrl-c退出函數退出bash腳本
- 2. 如何在Turbo C++中按Ctrl + Break而無限循環退出
- 3. 按Ctrl + C退出Go程序
- 4. Windows PowerShell不退出腳本與Ctrl-C
- 5. 在退出+目標c後獲取數組中的值
- 6. 使用Ctrl-C退出tkinter應用並捕獲SIGINT
- 7. 如何退出在C#
- 8. 如何從自己獲取最後退出時間戳?
- 9. 如何在Mac上退出Meteor開發服務器(與CTRL-C等效)?
- 10. 如何CTRL-C
- 11. Python線程在Python中按ctrl-c退出
- 12. Windows Python解釋器在Ctrl + C上退出
- 13. 如何在不使用ctrl-d的情況下退出swift repl?
- 14. 當按下Ctrl + C時,禁用「類型:退出<Enter>退出Vim」消息
- 15. Google在退出後如何處理後退按鈕?
- 16. atexit,c退出代理#
- 17. 如何在emacs退出後自動退出ansi-term?
- 18. 如何讓我的程序在進入退出後退出
- 19. 如何在TimePickerDialog彈出後獲取TimePicker
- 20. 無法用^ C退出
- 21. 在Java中捕獲Ctrl + C
- 22. 獲取的後退按鈕
- 23. 退出一個while循環,cin。使用CTRL-Z/CTRL-d不工作C++
- 24. 如何捕獲WPF/C#中的CTRL-BACKSPACE?
- 25. 如何使用Ctrl + D退出,如使用execl bash?
- 26. 如何在JFileChooser OK按下後退出?
- 27. 如何取消JFrame退出?
- 28. Vb.net捕獲Ctrl + C
- 29. 如何在執行特定時間後退出主函數C
- 30. GetExitCodeProcess在進程不存在時如何獲取退出代碼
是什麼給了你這個想法?爲什麼要這樣「更正確」? – innaM 2013-05-12 11:49:06
因爲迄今爲止據我所知,這就是Ctrl + C如果我沒有抓到它會做的。 – 2013-05-12 13:50:43