您的位置:首页 > 其它

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

2015-10-25 21:16 295 查看
程序一:

#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个进程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息