Linux中fork的使用(03)---使用if...else...区分父子进程特有的内容

环境:Vmware Workstation;CentOS-6.4-x86_64

说明:

1、根据父子进程中,fork返回值的结果不同,那么可以明确区分执行代码属于父进程还是子进程。

2、if的判断条件是fork的返回值是否大于0。

3、在父进程特有代码中修改内容,不会影响子进程的执行;在子进程特有代码中修改内容,不会影响父进程的执行。

4、在if...else...之外修改,会改变父进程和子进程的执行。

5、父进程和子进程的执行完全是不相干的,互不影响,因为它们是两个不同的进程,因此,父进程和子进程的执行是异步的。

代码实现:

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>

int main(int argc, char *args[])
{
	// 执行fork函数
	pid_t id = fork();
	// 判断fork是否执行成功
	if (id == -1)
	{
		printf("Message : %s\n", strerror(errno));
	}
	
	// 定义一个变量
	int num = 10;
	// 修改变量的值
	// 在这里修改是在if...else...外部修改,会影响父子进程的执行
	num = 100;
	// 判断条件是fork的返回值是否大于0
	if (id > 0)
	{
		printf("before father num = %d\n", num);
		// 在父进程特有的代码中修改变量的值,只会影响父进程的执行
		num = -1;
		printf("after father num = %d\n", num);	
	}
	else
	{
		printf("before son num = %d\n", num);
		// 在子进程特有的代码中修改变量的值,只会影响子进程的执行
		num = -3;
		printf("after son num = %d\n", num);	
	}
	return 0;
}
编译并执行程序:

[negivup@negivup mycode]$ gcc -o main main.c
[negivup@negivup mycode]$ main
before father num = 100
after father num = -1
[negivup@negivup mycode]$ before son num = 100
after son num = -3


PS:根据传智播客视频学习整理得出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值