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

posted on 2024-05-05 15:05  王景迁  阅读(11)  评论(0编辑  收藏  举报

导航