Linux C :系统调用-fork,wait,subreaper

     fork():创建子进程,并返回进程id。

     wait(&status):等待子进程终止。如果成功则会返回僵尸子进程的pid,status的值会是子进程的exitcode。

     exit(value):进程正常退出,并返回退出值value

     prctl(PR_SET_CHILD_SUBREAPER):设置当前进程为subreaper进程。

零、示例代码即可能的输出结果

目录

一、fork()

二、wait()

三、subreaper

四、解读上述代码和输出结果


#include <stdio.h>
#include <unistd.h>
#include <wait.h>
#include <sys/prctl.h>
int main(){
    int pid ,r,status ;
    printf("mark process %d as a subreaper\n",getpid());
    r=prctl(PR_SET_CHILD_SUBREAPER);
    pid = fork();
    if(pid){
        //parent 
        printf("subreaper %d child =%d\n",getpid(),pid);
        while(1){
	        pid =wait(&status);
	        if(pid >0){
	            printf("subreaper %d wait a ZOMBIE=%d\n",getpid(),pid);
	        }else{
	            break;
	        }
        }
   }else{
        //child
        printf("child %d parent=%d\n",getpid(),(pid_t)getppid());
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值