fork()创建子进程

在这里插入图片描述
   fork()是个特殊的函数,它用于创建子进程,有两个返回值,在父进程中的返回值是一个非0的数,在子进程中的返回值是一个为0的数,p1=fork()使父进程创建了子进程,这时存在父进程和子进程两个进程,父进程继续执行时发现fork()的返回值p1!=0,就执行putchar(‘b’)。与此同时,子进程发现fork()的返回值p1=0,于是进入else。进入else以后,p2= fork()使子进程创建了孙子进程,之后,子进程接着执行putchar(‘c’),同时,孙子进程执行putchar(‘c’)。打印是互斥的:父进程要打印b时,没有其他进程与它竞争资源,所以父进程可以立即执行;子进程要打印c时,孙子进程会与它竞争资源,二者到底谁先执行要依据操作系统的进程调度,所以执行顺序不一定,打印结果可能是bca或bac。


   疑问:分析结果如上,但是实际打印结果却会出现诸如bc,b等字符打印不全(不足3个)的情况,希望有大佬解答一下~~~

猜你喜欢

转载自blog.csdn.net/qq_44378854/article/details/106034409