Segmentation-Fault
圍繞引發分段錯誤的命令構造一個 while 循環
我有一個程序在某些情況下會引發分段錯誤。我想在發生分段錯誤時執行一個命令來處理數據,然後再次執行該命令,並一直這樣做直到分段錯誤停止。
作為虛擬碼的粗略嘗試,
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)。如果您在失敗時沒有獲得高價值的退出程式碼,那麼這可能意味著應用程序本身正在擷取錯誤,並強制使用不同的退出程式碼。