标签:print 不能 执行 目录 进程id 不同 details window下 资源
《Unix环境高级编程》中,看到fork函数不能理解,特此记录。
Unix编程环境下,一个现有的进程可以调用fork函数创建一个新进程。Unix下的fork函数,和window下的thread使用方式不同。
1.fork如何创建子进程
fork的翻译为叉子,分叉。
意思是,调用fork形成一个分支,这个分支就是子进程。
子进程将获得父进程所拥有的数据空间、堆和栈资源的副本,即两个进程在之后的执行过程中互不干扰。
2.fork函数执行一次,返回两次
执行一次:在父进程中执行一个
返回两次:当父进程进行完fork后,此时已经有两个进程了,分别是父进程和子进程。fork函数将分别给两个进程返回值。
fork返回给子进程的是0,返回给父进程的是子进程的进程ID
所以编写程序的时候可以这么写
if((pid=fork())<0) { printf("create error"); } else if(pid==0) { printf("zijincheng"); } else { printf("fujincheng"); }
fork后,
子进程执行这代码时,pid=0,打印出zijincheng
父进程执行时,pid是子进程的进程ID,即pid>0,打印出fujincheng
3.父进程和子进程各有自己的数据空间。
参考目录:http://blog.csdn.net/jason314/article/details/5640969
标签:print 不能 执行 目录 进程id 不同 details window下 资源
原文地址:http://www.cnblogs.com/hufangtao/p/7760410.html