Linux “实际打印的是什么?”;分段错误;?

Linux “实际打印的是什么?”;分段错误;?,linux,segmentation-fault,Linux,Segmentation Fault,出现错误时,控制台上打印分段错误的是哪个二进制或代码段?当启用作业控制时,这是调用shell的作业。使用bash进行演示: $ set +m # disable job control $ bash -c 'kill -SEGV $$' $ set -m # enable job control $ bash -c 'kill -SEGV $$' Segmentation fault (core dumped) 很确定

出现错误时,控制台上打印分段错误的是哪个二进制或代码段?

当启用作业控制时,这是调用shell的作业。使用bash进行演示:

$ set +m                    # disable job control
$ bash -c 'kill -SEGV $$'
$ set -m                    # enable job control
$ bash -c 'kill -SEGV $$'
Segmentation fault (core dumped)

很确定是贝壳。它收到通知,它的子进程已退出并打印消息。@Klaus:这或多或少是正确的,但在出现分段错误的情况下,返回值将指示进程已被SIGSEGV信号终止-因此shell能够(并且确实)打印此消息:)@Klaus,
128+
SIGSEGV
通常是
11
,因此
139
@Klaus
man 2 waitpid
@Klaus,这实际上不起作用,因为从
main()
返回状态代码(大致上)是对
exit()
exit()
的隐式调用。有关更多信息,请参阅。在更一般的形式中,它是父作业?我做了一个小的二进制代码,它分叉,父wait()返回139(segfault)。您对它的表示是正确的。:-)但是请注意这些词,在本文中,“job”是一个适用于子进程的特定术语。父进程是一个shell,负责跟踪其子进程,它称之为作业(因此称为“作业控制”)。当它们异常终止时,由父shell通过信号发出通知。这是父shell的职责。:-)