linux进程代码fork案例

本文介绍了如何使用fork函数创建新的进程,并探讨了进程创建后父子进程间的变量独立性。通过一个具体的C语言示例程序,展示了如何利用fork函数实现进程复制,并解释了进程间变量x的变化情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fork函数位于unistd.h头文件,用来创建一个新的进程,原来的进程依然会存在。

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
pid_t Fork(void)
{
    pid_t pid;
    if((pid=fork())<0)
    {
        perror("Fork error");
    }
    return pid;
}

int main()
{
    int x=1;
    if(Fork()==0)
    {
        printf("printf1:x=%d\n",++x);
       //exit(0);
    }
    printf("printf2:x=%d\n",--x);
    exit(0);

}
如果没有取消注释,结果是:

printf1:x=2;

printf2:x=1;

printf2:x=0;

可以看出,Fork函数执行后,产生并进入子进程,但是依次执行

 printf("printf1:x=%d\n",++x);
 printf("printf2:x=%d\n",--x);
最后子进程退出,父进程继续,从if语句判断后开始执行,只会执行
 printf("printf2:x=%d\n",--x);

父进程和子进程的数据是来自与程序的拷贝,所以两个进程的变量x之间没有影响。

如果注释被取消,

printf1:x=2;

printf2:x=0;

子进程被exit,所以没有接着执行。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值