c/c++ 多进程 fork函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c/c++ 多进程 fork函数相关的知识,希望对你有一定的参考价值。
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <stdlib.h>
4
5 int main()
6
7 pid_t pid1,pid2;
8
9 pid1=fork();
10
11 pid2=fork();
12
13 printf("hellow world!\n");
14
~
这段代码如果该为
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <stdlib.h>
4
5 int main()
6
7 pid_t pid1,pid2;
8
9 pid1=fork();
10
11 if(pid>0) pid2=fork();
12
13 printf("hellow world!\n");
14
~ 这两代码为什么会产生不同的执行结果?谢谢!
第一个是主进程子进程执行完全一样的代码,fork一个子进程,所以会输出4个hello。
第二个在第一次fork完毕后只有主进程会fork一个子进程,所以会输出3个hello。 参考技术A 第一个例子里,第一个fork会出来一个子进程(共有2个进程),第二个fork会在这两个进程里面都创建子进程(结果共有4个进程),输出4次hello
第一个例子里,第一个fork会出来一个子进程(共有2个进程),第二个fork前有pid>0判断,所以只会在主线程里面都创建子进程(结果共有3个进程),输出3次hello本回答被提问者采纳 参考技术B 你的pid是什么?
以上是关于c/c++ 多进程 fork函数的主要内容,如果未能解决你的问题,请参考以下文章
为啥在调用 c++ fork 函数之前创建的值没有被父进程和子进程修改两次?
linux C语言 clone() 和 fork() 的区别,fork函数的用法,主要应用场景(clone是fork的升级版本,可以将创建出来的进程变成父进程的兄弟进程)
linux C/C++多进程教程(多进程原理以及多进程的应用以多连接socket服务端为例(fork子进程处理socket_fd),同时介绍了僵尸进程产生原因与解决方法)(getpidfork)