fork()函数

本文介绍了Linux系统中用于创建进程的fork()函数,详细解释了该函数的工作原理,包括如何返回两个不同的值给父进程和子进程,并通过示例代码展示了如何使用fork()。文章还提出了几个关于fork()函数使用的思考题,帮助读者更深入理解其行为。
摘要由CSDN通过智能技术生成

问题导入:大家应该都对进程有一个概念,我们从硬盘上找到我们写下的.c文件代码,在linux中我们通过输入驱动命令让预处理器、编译器、汇编器和连接器给我们最后生成一个可
执行的目标文件,然后再给一个执行命令,将这个可执行的文件加载进内存执行。就在可执行文件加载进内存的时候,生成一个新的进程,供cpu管理和控制它的执行。那这里就有一个疑问了,
这里cpu是自动为我们生成了一个进程,它是怎样生成的呢?我们自己能不能手动创建一个新的进程呢?
       
答案是肯定的,系统使用的是fork函数创建进程,fork是一个系统调用,如果我们想在自己的程序中手动的创建新进程,我们也可以使用这个函数。
首先,这个函数的声明是:pid_t fork(void);
使用fork()函数需要包含的头函数,pid_t是在头文件里定义的,所以这个文件也要包括。
函数的参数为空,不需要传入参数,但是这个函数的返回值很重要。调用fork()的函数我们称为父进程,而因为fork()而生成的另外一个进程称为子进程。父进程返回值为新进程的pid,而新进程返回值为0。 为什么一个函数调用可以返回两个值呢?
这是因为fork()一旦调用会产生两个一模一样的进程,所以在父进程中有一份自己的代码,而子进程中也复制了一份和父进程一样的代码,所以相当于在两个进程中执行一个代码, 那两个进程中每个进程都有自己的一个返回值,且仅返回了一个,这样的角度看,还是符合c语言的语法,函数只有能返回一个值。
还有一个小地方需要强调一下࿰
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值