fork() || fork()和fork() && fork()笔试题

来源:互联网 发布:淘宝美工课件 编辑:程序博客网 时间:2024/05/21 15:07

程序一:

#include "stdio.h"#include "sys/types.h"#include "unistd.h"int main(){        fork() || fork();        printf("+");        return 0;}

结果输出3个"+",共创建3个进程。

fork()给子进程返回一个零值,而给父进程返回一个非零值;
在main这个主进程中,首先执行 fork() || fork(), 左边的fork()返回一个非零值,根据||的短路原则,前面的表达式为真时,后面的表达式不执行,故包含main的这个主进程创建了一个子进程,
由于子进程会复制父进程,而且子进程会根据其返回值继续执行,就是说,在子进程中, fork() ||fork()这条语句左边表达式的返回值是0, 所以||右边的表达式要执行,这时在子进程中又创建了一个进程,
即main进程->子进程->子进程,一共创建了3个进程。

程序二:
#include "stdio.h"#include "sys/types.h"#include "unistd.h"int main(){        fork() && fork();        printf("+");        return 0;}
结果输出3个"+",共创建3个进程。

程序三:

#include "stdio.h"#include "sys/types.h"#include "unistd.h"int main(){        fork() || fork() || fork();        printf("+");        return 0;}
结果输出4个"+",共创建4个进程。


程序四:

#include "stdio.h"#include "sys/types.h"#include "unistd.h"int main(){        fork() && fork() && fork();        printf("+");        return 0;}
结果输出4个"+",共创建4个进程。


程序五:

#include "stdio.h"#include "sys/types.h"#include "unistd.h"int main(){        fork() || fork() || fork() || fork();        printf("+");        return 0;}
结果输出5个"+",共创建5个进程。


程序六:

#include "stdio.h"#include "sys/types.h"#include "unistd.h"int main(){        fork() && fork() && fork() && fork();        printf("+");        return 0;}
结果输出5个"+",共创建5个进程。




0 0