Linux 中的fork()函数
2015-04-19 10:12
99 查看
fork()函数总是“调用一次,返回两次”,在父进程中调用一次,在父进程和子进程中各返回一次。fork在子进程中返回值是0,在父进程中返回值是子进程的id。
子进程在创建时会复制父进程的当前状态,包含变量值和缓存中的值。
程序运行的结果基本上是父子进程交替打印,但是也不一定,取决于系统中其他进程的运行情况和内核的调度算法。
fork调用的奇妙之处就是它仅仅被调用一次,但是却能够返回两次,它可能有三种不同的返回值:
在父进程中,fork返回新创建的子进程的进程id
在子进程中,fork返回0
如果出现错误,fork返回一个负值
结果是20次
![](http://img.blog.csdn.net/20150419101748331?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWhhaXJlbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
参考链接:
http://zhidao.baidu.com/link?url=lzSI-FkKMF7tw8gIryekEkr1hKRXZQSiyoRAxiH2eut0PhzBbgTdyCW50lBdesfHMN5GsqZJ_5ZR7-3hst3RXK
http://www.cnblogs.com/bastard/archive/2012/08/31/2664896.html
子进程在创建时会复制父进程的当前状态,包含变量值和缓存中的值。
程序运行的结果基本上是父子进程交替打印,但是也不一定,取决于系统中其他进程的运行情况和内核的调度算法。
fork调用的奇妙之处就是它仅仅被调用一次,但是却能够返回两次,它可能有三种不同的返回值:
在父进程中,fork返回新创建的子进程的进程id
在子进程中,fork返回0
如果出现错误,fork返回一个负值
#include <stdio.h> int main(int argc, char* argv[]) { fork(); fork() && fork() || fork(); fork(); printf("+/n"); }
结果是20次
参考链接:
http://zhidao.baidu.com/link?url=lzSI-FkKMF7tw8gIryekEkr1hKRXZQSiyoRAxiH2eut0PhzBbgTdyCW50lBdesfHMN5GsqZJ_5ZR7-3hst3RXK
http://www.cnblogs.com/bastard/archive/2012/08/31/2664896.html
相关文章推荐
- linux中fork()函数详解
- linux中fork()函数详解(原创!!实例讲解)
- linux中fork()函数详解(原创!!实例讲解)
- linux编程|fork函数讲解
- linux中fork()函数详解
- linux中fork函数详解
- Linux中fork()函数详解
- linux中fork()函数详解(原创!!实例讲解)
- linux中fork()函数详解
- linux fork() 函数应用及其详解
- [置顶] linux中fork()函数详解 ) http://blog.csdn.net/jason314/article/details/5640969
- linux中fork()函数详解(原创!!实例讲解)
- linux下进程间通信方式之(1)-管道及fork()函数
- linux fork函数理解
- [fork]Linux中的fork函数详解
- Linux中fork()函数详解
- [置顶] linux中fork()函数详解(原创!!实例讲解)
- Linux中fork()函数详解
- Linux 内核--fork()函数创建进程 (续)之copy_mem(int nr, struct task_struct *p)
- linux中fork()函数详解