一个进程通过fork函数创建一个与原来进程相同的进程。返回值为进程id,如果错误返回负值。一个进程调用fork函数后,系统给新的进程分配资源, 如创建储存空间和代码空间,然后将原来的进程的所有值都复制到新的进程中,只有少数值与原来值不同。不同值为fork函数本身的返回值。对于父进程,其返回值为子进程的进程id,而在子进程中返回0。
对于父进程,其可以获得创建子进程,而对于子进程,其无创建子进程。
fork出错的两种原因:
1.当前进程数达到系统规定的上限,这时errno为EAGAIN。
2. 系统内存不足,errno的值会被设为ENOMEN。
创建进程后,两个进程基本相同,这两个进程没有固定的先后顺序,要看系统的进程调度策略。
这里说的对于子进程返回0是当创建一个新的进程时,新进程内存设置为执行到fork函数的部分,但是其调用的fork函数返回0,而子进程本身还是可以继续通过fork函数来创建子进程的。
分享到:
相关推荐
linux_fork函数
用fork创建子进程; 回答no执行父进程,yes执行父进程并复制进程的操作;在父进程将str3,str4接至str0中,并输出str0 ;在子进程中,将str1,str2接至str0中,并输出str0
linux内核 do_fork 函数源代码浅析。 经典讲解!
在win系统下模拟linux中的fork()函数执行过程与基础通信过程 备注清晰。
linux中fork()函数详解.docx
一些简单的linux下进程管理文件示例,关于fork()函数的,可以作为入门级别的
fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又为程序员提供了一个简洁明了的...
关于fork函数的介绍,和测试程序,原版fork linux平台
Linux 中 fork() 函数详解,相关教程链接如下: http://blog.csdn.net/tennysonsky/article/details/45165811
本文档内容是我自己写的一个关于fork函数新建进程并对调用流程进行分析的文档。 运行环境是win7安装vmware虚拟机里的linux系统,直接gcc编译得到的执行结果。 看完次文档后即可对fork有一个比较系统的认识。
最近在看进程间的通信,看到了fork()函数,虽然以前用过,这次经过思考加深了理解。现总结如下
2.fork 函数被调用一次,但返回两次, 两次返回的唯一区别是子进程的返回值是 0, 而父进程的返回值是新子进程的 PID。 3.子进程和父进程继续执行 fork 调用之后的指令。 在上图的存储空间布局中,父子进程只共享正文...
linux下fork系统调用分析。设计do_fork,copy_process函数以及x86体系下系统调用执行过程。更多分析请看edsionte.com.linux下fork系统调用分析。设计do_fork,copy_process函数以及x86体系下系统调用执行过程。更多...
LINUX的消息函数的分析,很详细,有流程图的
该事例程序属多进程调用小程序,采用了系统调用函数fork()进行子进程的调用。在该文档中介绍了fork()调用的相关细节及注意点以及父子进程段的关系。并将程序运行后输出到屏幕结果与输出重定向到文件后的结果进行比较...
fork函数在Linux中可以创建子进程即一个新的进程,这里我们根据实例来浅谈Linux环境下并发编程中C语言fork()函数的使用,需要的朋友可以参考下
主要为大家详细介绍了Linux 中fork()函数实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
linux下的fork函数机理说明和用法。非常详细和生动。
在linux系统中,fork(),vfork()和clone函数都可以创建一个进程,但是它们的区别是什么呢?本文就这三者做一个较深入的分析,感兴趣的朋友一起看看吧