请教linux下进程的退出码

wxstorm
企鹅 2012-11-27 字数 130

如果是程序crash了,比如空指针引用,段错误之类的,进程的退出码是固定的么?怎么知道进程是正常退出的还是crash的?

现在我看到是139.。

3x

5 个回复
tucano
tucano 2012-11-27

用wait或waitpid回收子进程,可判断出是正常结束的还是因为段错误引发的信号结束的。

【 在 wxstorm 的大作中提到: 】

: 如果是程序crash了,比如空指针引用,段错误之类的,进程的退出码是固定的么?怎么知道进程是正常退出的还是crash的?

: 现在我看到是139.。

: 3x

wxstorm
企鹅 2012-11-27

在shell脚本里能判断么?

【 在 tucano (tucano) 的大作中提到: 】

: 用wait或waitpid回收子进程,可判断出是正常结束的还是因为段错误引发的信号结束的。

tucano
tucano 2012-11-27

你指的是特殊变量$? 显示上一命令返回值吧

【 在 wxstorm 的大作中提到: 】

: 在shell脚本里能判断么?

cwc
old4 2012-11-27

换py写脚本

【 在 wxstorm (企鹅) 的大作中提到: 】

: 在shell脚本里能判断么?

vonNeumann
劣币驱逐良币 | 少灌水 2012-11-27

Shell 里面被信号杀死的进程表现为 $? > 128

减去 128 得到对应的信号,可以用 kill -l 直接看信号名字

/tmp % kill -l 11

SEGV

/tmp % kill -l 139

SEGV

/tmp % echo $((139-128))

11

ps. 按惯例程序主动退出的只用 [0,127] 以内的返回值。如果非要有程序 exit(139) 也是可以的,这时候从 shell 里面就区分不开了..

【 在 wxstorm (企鹅) 的大作中提到: 】

: 在shell脚本里能判断么?