fork()函数

pid_t fork();

完全拷贝一份内存与数据到子进程。父进程和子进程同时运行。返回的0为子进程;父进程返回子进程的PID。谁能最先抢到CPU不确定。

返回值:

-1:失败。

0:子进程逻辑控制流。

其他(返回值为子进程的PID):父进程逻辑控制流。

本质:

复制+分叉。

特点(4):

1.调用一次,返回两次。

2.会额外分出一个相同但是独立的地址空间。

3.并发执行。

并发:两个或者多个进程在同时存在。

  进程指令同时或者交替执行;单核。

并行:两个或者多个进程在同时执行。

  是一种特殊的并发;多核。

4.共享文件。

代码示范:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int i = 100;
int main(){
	int j=100;
	FILE* fd = fopen("./test","w+");
	pid_t pid = fork();
	if(pid == 0){// child
		int k;
		for(k=0;k<10000;k++)
			fprintf(fd,"this is childi%d\t j%d\n",++i,++j);
	}else{	//father
		int k;
		for(k=0;k<10000;k++)
			fprintf(fd,"this is fatheri%d\t j%d\n",--i,--j);
	}
	fclose(fd);
	exit(0);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值