fork()相关

来源:互联网 发布:宜乎百姓之谓我爱也忽 编辑:程序博客网 时间:2024/06/05 04:13

fork()知识相关

  1. 子进程是从fork后面那个指令开始执行的。
  2. 返回值:子进程中返回0,父进程中返回子进程ID,出错返回-1

我们看这样一道题,下面的程序有多少个进程?

#include<stdio.h>int main(){  fork();  fork()&&fork()||fork();  fork();}</stdio.h>

首先我们执行fork();main()生成一个子进程1.执行完(a)后,现在有两个进程main 和1.


然后执行fork()&&fork()||fork();

我们需要知道的是对于a&&b,如果a为0,那么就没必要执行后面b了。对于a||b,如果a>0,那么也没有必要执行后面的b了。


好了,接着执行下面的语句。

好了,现在系统中一共有三个进程了。main又产生一个2,1又产生一个3.注意他们的返回值。接下来要执行&&操作,那些返回值为零的已经没必要继续执行了,所以他们止步于此(仅限于本语句中&&fork()他们止步了)。>0的进程继续fork();吧


现在系统中的进程是main,1,2,3,4,5 但是!对于||来说,返回值>0的进程,也不会继续执行了。所以,接下来。。。



剩最后一个fork()了,系统中所有的进程都会执行哦

最后一张画风稍微不同,只画出了系统中多出来的进程。那么现在我们一共有9+绿色的圈圈10+main,一共有20个进程。

应该讲清楚了吧。



0 0
原创粉丝点击