在c語言中寫一個無限迴圈像是for(;;)....
按ctrl+c的話就可關閉那個無限迴圈....
請問該如何使用signal指令寫一個不理會該中斷的副程式...
2005-03-26 18:12:30 · 1 個解答 · 發問者 ? 1 in 電腦與網際網路 ➔ 程式設計
請問你問這問題的用意是?
2005-03-27 04:38:39 補充:
你按ctrl+c的時候, 電腦會傳一個中斷(Interrupt)的訊息給你的程式. 一般來說, 如果程式自己沒有設定中斷訊息程序的話, 程式就會結束. 但是如果程式自己設定中斷訊息程序的話. 你可以在中斷訊息程序裡決定要做什麼. 比如你可以顯示給使用者說程式已被中斷請做好準備... :)
要怎樣寫中斷訊息程序呢.很簡單. 你只要寫一個函式
void signal_handler(int signal) {
}
signal_handler只是函式的名字,可以改.
signal只是變數的名字,可以改.
其它的不能改.
函式寫完之後再到main裡加signal(SIGINT, signal_handler);就好了. 這指令告訴電腦如果在執行這程式時收到SIGINT(cntl+c)的話請執行signal_handle.
之後如果你的程式被ctrl+c的話. 你的程式會暫停執行它現在的指令而跳到signal_handler去執行signal_handler裡的指令而不會結束.(除非在signal_handler裡你自己叫exit去結束程式).
signal_handler執行完之後會跳回原來的指令而繼續執行下去
一般來說在signal_handler裡都有exit因如果電腦傳一個中斷訊息給你的話, 通常是要你結束運行.
在電腦裡有好多種中斷訊息, 像SIGINT和SIGKILL.
要記的#include
懂不懂? 不懂請再問
2005-03-26 23:38:39 · answer #1 · answered by 龍 7 · 0⤊ 0⤋