多进程

本文详细介绍了如何在Unix/Linux系统中创建子进程,包括使用fork和exec函数族,特别是execlp和execl的区别。还探讨了孤儿进程和僵尸进程的概念,解释了孤儿进程如何被init进程领养,以及僵尸进程产生的原因和处理方法。最后,讨论了wait和waitpid函数在回收子进程资源中的作用和使用技巧。
摘要由CSDN通过智能技术生成

创建子进程

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
   
    pid_t pid;
    printf("xxxxxxxxxxxxx\n");
    pid = fork(); //one call, two return
    if (pid == -1)
    {
   
        perror("fork error");
        exit(1);
    }
    else if (pid == 0)
    {
    //子进程
        printf("I'm child, pid = %u, ppid = %u\n", getpid(), getppid());
    }
    else
    {
   
        printf("I'm parent, pid = %u, ppid = %u\n", getpid(), getppid());
        sleep(1);
    }
    printf("yyyyyyyyyyyyyy\n");
    return 0;
}

创建n个循环子进程

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
   
    int i;
    pid_t pid;
    for (i = 0; i < 5; i++)
    {
   
        pid = fork();
        if (pid == -1)
        {
   
            perror("fork error");
            exit(1);
        }
        else if (pid == 0)
        {
    //子进程
            break;
        }
    }
    if (i < 5)
    {
   
        sleep(i);
        printf("I'm %dth child, pid = %u, ppid = %u\n", i + 1, getpid(), getppid());
    }
    else
    {
   
        sleep(i);
        printf("I'm parent, pid = %u, ppid = %u\n", getpid(), 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值