Linux——创建和销毁进程

如何创建进程?

直接使用fork函数,创建子进程。调用fork函数的时候会有一个fpid返回值。
注意:这里的fpid在执行fork后为两个,子进程一个是为0,父进程一个是子进程的id。注意fpid 不是父进程的和子进程的id!!!
通过判断fpid切换到父进程子进程:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
    pid_t fpid;//fpid表示fork函数返回的值
    int count=0;
    fpid=fork();
    if (fpid < 0)
        printf("error in fork!");
    else if (fpid == 0) {
		printf("parent fpid:",fpid);
        printf("i am the child process, my process id is %d\n",getpid());
        printf("I’m children\n");
        count +=2;
    }
    else {
        printf("parent fpid:",fpid);
		
		printf("i am the parent process, my process id is %d\n",getpid());
        printf("I’m parent.\n");
        count++;
    }
    printf("统计结果是: %d/n",count);
    return 0;
}

在这里插入图片描述

说明:这里子进程复制父进程的资源。两者独立。但是这种创建进程的方式特别慢。

如何销毁创建的进程?

使用exit()函数
这里使用的时候会有一个返回值,返回子进程的状态。

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    pid_t fpid;//fpid表示fork函数返回的值
    int count=0;
    int status = 0;

    fpid=fork();
    if (fpid < 0)
        printf("error in fork!\n");
    else if (fpid == 0) {
        printf("i am the child process, my process id is %d\n",getpid());
        printf("I’m children\n");
        count +=2;
        exit(2);	//这里直接返回结束子进程
    }
    else {
        printf("i am the parent process, my process id is %d\n",getpid());
        printf("I’m parent.\n");
        count++;
    }
    printf("统计结果是: %d\n",count);
    //父进程捕捉子进程的状态
    wait(&status);
    printf("parent: status: %d\n", WEXITSTATUS(status));
    return 0;
}

在这里插入图片描述
在销毁子进程的时候可以返回一个状态。用wait()函数接收。如图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小生乔克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值