26 關於信號行動(action)的敘述,下列何者錯誤?
(A) 程序可以選擇忽略信號
(B) 程序可以選擇接住(catch)信號
(C) 程序可以選擇採取預設行動
(D) 所有信號都可以被忽略或攔截
統計: A(1), B(0), C(0), D(7), E(0) #3399873
詳解 (共 2 筆)
【第一步:找關鍵字】
關鍵字:
-
信號(signal)(作業系統通知程序的機制)
-
忽略(ignore)
-
接住(catch)
-
所有(陷阱關鍵字)
? 「所有」幾乎一定是陷阱!
【第二步:白話翻譯】
這題在問:
? 「當作業系統發出信號(像 Ctrl+C)時,程式可以怎麼處理?哪個說法是錯的?」
【第三步:解題思路】
這題在考什麼觀念?
? Signal 的三種處理方式 + 特例信號
解題步驟
-
記住 signal 的三種處理方式
-
想想有沒有「例外不能改的」
-
找出錯誤敘述
原理與規則(生活比喻)
把 signal 想成「老闆通知」:
老闆叫你做事(signal)時,你可以:
-
忽略(ignore) → 當沒聽到
-
接住(catch) → 自己決定怎麼處理
-
預設(default) → 照公司規定做
? 但有些命令你「不能不理」
【第四步:選項分析】
(A) 為什麼對?
✔ 正確
? 程序可以忽略某些信號
例如:
-
SIGINT 可以 ignore(理論上)
(B) 為什麼對?
✔ 正確
? 可以用 handler 接住信號
例如:
(C) 為什麼對?
✔ 正確
? 可以使用系統預設行為
例如:
-
終止程序
-
產生 core dump
(D) 為什麼錯?
✘ 錯誤(本題答案)
「所有信號都可以被忽略或攔截」
? 錯在「所有」
有兩個例外:
-
SIGKILL(強制終止)
-
SIGSTOP(強制暫停)
? 這兩個:
-
不能 ignore
-
不能 catch
【觀念補充與延伸】
核心觀念定位
? 作業系統 / 行程管理(process control)
? 中高頻考點
法條或定義
-
Signal(信號):
作業系統用來通知程序發生某些事件的機制
Signal 三種處理方式
| 方法 | 說明 |
|---|---|
| ignore | 忽略 |
| catch | 自訂處理 |
| default | 預設行為 |
重要例外(必背!)
| 信號 | 特性 |
|---|---|
| SIGKILL | 無法攔截或忽略 |
| SIGSTOP | 無法攔截或忽略 |
觸類旁通(舉一反三)
對比概念
-
SIGINT(Ctrl+C)
-
SIGTERM(正常終止)
-
SIGKILL(強制終止)
變化題型
-
問:哪個 signal 無法被捕捉?
? SIGKILL
【記憶口訣】
? 「KILL 跟 STOP,誰都擋不住」
【常見陷阱】
學生最容易搞混的地方
以為所有 signal 都能控制
心理盲點
看到「所有」沒有警覺
避坑指南
? 看到「所有」:
一定問自己:
「有沒有例外?」