防止僵尸进程的方法:

    技术2022-05-18  9

    1.每次执行fork()前利用waitpid查看是否有子进程需要处理2.调用signal(SIGCHLD,fun)注册信号处理函数,在函数里调用waitpid()void fun(int){ waitpid();}3.利用 sigaction 结构体struct sigaction act,oldset;//设置信号性质的结构体sigemptyset(&act.sa_mask);//清空屏蔽位act.sa_handler = NULL;//函数处理函数为空act.sa_flags = SA_NOCLDWAIT | SA_NOCLDSTOP;//不接收子进程的信号,并且不让子进程为僵尸进程sigaction(SIGCHLD,&act,&oldset);//设置SIGCHLD信号。


    最新回复(0)