fork()函数

本文详细解析了fork()函数的工作原理及其使用方法。通过具体示例代码展示了如何利用fork()创建子进程,并探讨了父进程与子进程间的并发执行及资源分配特性。

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

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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值