fork函数问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fork函数问题相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
main()
int p1;
while((p1=fork())==-1);
if(p1==0)
putchar('b');
elseputchar('a');

请问这段代码输出的结果是什么,为什么。。 还有while((p1=fork())==-1);是什么意思,谢谢

fork()函数用于创建子进程,新创建的子进程拥有和父进程一样的资源(比如相同的代码,相同的执行位置),如果函数失败会返回负值。

while ((p1 = fork()) == -1); 目的是: 1.将fork的返回值赋给p1; 2. 如果函数失败则再次调用,知道成功为止.

这段代码会创建一个子进程,当创建子进程时,子进程和父进程都会从同一个起点执行相同的代码(从while 后面的语句开始), 然后执行到if语句, 因为fork函数对于子进程会返回0, 对于父进程会返回子进程的ID(标识符),所以当执行到if时, 父进程执行putchar('a'),子进程执行putchar('b');
参考技术A 此代码会将a和b都输出,具体顺序要看系统怎么执行了。当P1==0时,子进程执行,输出b,同时父进程也在执行,会输出a,
while((p1=fork())==-1);表明创建进程失败,继续创建进程,知道创建成功,执行后面的语句。对于创建进程还有一个函数可以使用,即vfork(),用这个函数时,则会先输出b,再输出a,因为此函数会一直阻塞父进程知道子进程退出或调用exec执行新的程序。建议你通过书将进程这块知识好好看下,书上这些知识都会给。我也正在学,加油喽

以上是关于fork函数问题的主要内容,如果未能解决你的问题,请参考以下文章

关于fork()函数

当一个函数中多次出现fork函数会是啥结果

c/c++ 多进程 fork函数

fork函数

fork函数返回值问题

C中的fork()函数