在C語言中,goto
語句主要用于跳轉到程序中的另一個位置。它可以用于跳出循環、條件語句或者函數等。然而,goto
語句不能直接處理中斷。
在C語言中,處理中斷通常使用signal()
函數或者setjmp()
和longjmp()
函數。這些函數允許你在程序中捕獲特定類型的中斷(如SIGINT、SIGTERM等),并在中斷發生時執行特定的代碼。
例如,使用signal()
函數處理中斷:
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
void signal_handler(int signal);
int main() {
signal(SIGINT, signal_handler);
while (1) {
printf("Program is running...\n");
sleep(1);
}
return 0;
}
void signal_handler(int signal) {
printf("Interrupt signal (%d) received.\n", signal);
// 在這里執行中斷處理代碼,例如清理資源、保存狀態等
// 退出程序
exit(1);
}
在這個例子中,當用戶按下Ctrl+C時,程序會捕獲到SIGINT中斷,并調用signal_handler()
函數處理中斷。在signal_handler()
函數中,你可以執行特定的代碼來處理中斷,例如清理資源、保存狀態等。最后,使用exit()
函數退出程序。