首页 > 系统相关 >C语言 子进程段错误后变成僵尸进程

C语言 子进程段错误后变成僵尸进程

时间:2024-05-05 15:11:26浏览次数:22  
标签:arr 僵尸 int pid C语言 test printf 进程

空指针获取首元素时出现段错误,子进程异常退出,父进程没有处理。

#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

标签:arr,僵尸,int,pid,C语言,test,printf,进程
From: https://www.cnblogs.com/WJQ2017/p/18173516

相关文章

  • 标准C语言1
    一、C语言介绍​ 丹尼斯.里奇和肯.汤普逊在1971~1973年美国贝尔实验室,在开发UNIX操作系统时,在BCPL语言的基础上(newB语言),发明第一款高级编程语言,取BCPL第二个字母作为名字,所以叫C语言​ BCPL->newB->C->UNIX->Minix->Linux​ 它是为了开发操作系统而研发的一款编程语言,它特......
  • C语言 父子进程不能共享全局变量
    父子进程不能共享全局变量。父子进程中的任何一方修改了全局变量,只是修改了副本,只对自己可见,对另一方不可见。C语言中即使加了static也不行。#include<stdio.h>#include<unistd.h>//初始值是0intflag;intmain(){pid_tpid;//父进程和子进程执行相同代码即......
  • 进程上下文详解
    由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。时间片多任务系统往往需要同时执行多道作业。作业数往往大于机器的CPU......
  • C语言转写成MIPS指令集汇编以及MIPS指令集汇编中函数调用时栈的变化
    一、问候语欢迎你来到我的博客!二、C语言代码分析  这段C语言代码共有3个函数组成。set_array函数传入1个int类型的变量num,并创建了1个int类型临时变量i和1个临时int类型数组array,里面含有10个单位,此函数主要目的是调用compare函数,并将num和i传入该函数中,得到其函数返回值......
  • 05. C语言数组
    数组用于将多个数据集中存储,方便管理,此文将集中存储任何类型数据的语句都称为数组,数组根据存储数据的类型和方式分为同型数组、结构体、共用体、枚举。 【同型数组】同型数组也直接称为数组,用于存储多个类型相同的数据,数组内的数据称为数组元素,数组元素占用连续的虚拟地址,每个......
  • 在Linux中,什么是守护进程,它们是如何工作的?
    在Linux系统中,守护进程(Daemon)是一种特殊的后台进程,它们在用户不直接干预的情况下运行,执行特定的系统任务或等待特定的事件触发。守护进程对于操作系统的稳定运行至关重要,因为它们负责处理许多关键的系统功能。1.守护进程的特点后台运行:守护进程在后台运行,不与任何终端或控制台......
  • 浙大版C语言程序设计习题11-17
    点击查看代码typedefstructNODE{intdata;structNODE*next;}NODE,*Linkedlist;//初始化头节点voidInit(Linkedlist&L){L=(NODE*)malloc(sizeof(NODE));L->next=NULL;}//尾插法创建链表LinkedlistCreateFromRear(LinkedlistL){NODE*rear=L;for......
  • C语言代码题
    C语言代码--练习题试写一个函数,计算字符串s中最大连续相同的字符个数。例如,若s为"aaabbbb",则返回值为4;若s为"abcde",则返回值为1。#include<stdio.h>/******************************************************************************functionname:max_sam......
  • 【C语言】---- 文件输入输出与文件管理函数
    1文件输入输出函数1.1打开和关闭文件fopen函数fopen是C标准库中用于打开文件的函数之一。它的原型定义在<stdio.h>头文件中,具体格式如下:FILE*fopen(constchar*filename,constchar*mode);这个函数接受两个参数:filename:一个以字符串形式表示的文件名,用于指定要......
  • C语言 Stack功能实现(自存)
    #include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefintE;typedefstructnode{Edata;structnode*next;}Node;typedefstruct{Node*top;intsize;}Stack;//APIStack*stack_create(void);void......