Segmentation-Fault

圍繞引發分段錯誤的命令構造一個 while 循環

  • December 5, 2018

我有一個程序在某些情況下會引發分段錯誤。我想在發生分段錯誤時執行一個命令來處理數據,然後再次執行該命令,並一直這樣做直到分段錯誤停止。

作為虛擬碼的粗略嘗試,

dodgy_command

while SegFault
        dataProcessing
        dodgy_command
end

我想我需要使用 Trap 命令,但我不明白這個命令的語法。

當程序異常中止時,退出程式碼(如 shell 所見)通常設置高位,因此值為 128 或更高。所以一個簡單的解決方案可能是

dodgy_command

while [ $? -ge 128 ]
do
 process_data
 dodgy_command
done

如果您只需要段錯誤而不需要任何其他類型的錯誤,則 while 行變為$? -eq 139(因為 SEGV 是信號 11;128+11=139)。

如果您在失敗時沒有獲得高價值的退出程式碼,那麼這可能意味著應用程序本身正在擷取錯誤,並強制使用不同的退出程式碼。

引用自:https://unix.stackexchange.com/questions/486180