Pab*_*blo 0 segmentation-fault
我有一个程序会在某些情况下引发分段错误。我想在发生分段错误时执行一个命令来处理数据,然后再次执行该命令,并一直这样做直到分段错误停止。
作为伪代码的粗略尝试,
dodgy_command
while SegFault
dataProcessing
dodgy_command
end
Run Code Online (Sandbox Code Playgroud)
我想我需要使用 Trap 命令,但我不了解此命令的语法。
当程序异常中止时,退出代码(如 shell 所见)通常会设置高位,因此该值是 128 或更高。所以一个简单的解决方案可能是
dodgy_command
while [ $? -ge 128 ]
do
process_data
dodgy_command
done
Run Code Online (Sandbox Code Playgroud)
如果你特别想要一个段错误而不是任何其他类型的错误,while 行就会变成$? -eq 139
(因为 SEGV 是信号 11;128+11=139)。
如果您在失败时没有获得高价值的退出代码,则可能意味着应用程序本身正在捕获错误,并强制使用不同的退出代码。