C语言 子进程段错误后变成僵尸进程
空指针获取首元素时出现段错误,子进程异常退出,父进程没有处理。
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if (pid > 0)
{
printf("father process is PID: %d\n", getpid());
while (1)
{
sleep(1);
}
}
else if (pid == 0)
{
printf("son process pid is %d\n", getpid());
int *arr = NULL;
int num = arr[0];
}
else
{
printf("fork failed\n");
return 1;
}
return 0;
}
# 编译时-g带上调试信息
gcc -o test -g test.c
# 在二进制目录下生成core文件
ulimit -c unlimited
# 调试core文件
gdb ./test core.18165