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() || 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个进程。
#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个进程。
相关文章推荐
- git fork同步是什么意思?
- Linux系统中C语言编程创建函数fork()执行解析
- Linux C中库函数与系统调用的区别详细解析
- Python 创建子进程模块subprocess详解
- python创建进程fork用法
- 小结Python用fork来创建子进程注意事项
- Python中的进程分支fork和exec详解
- 戴维营教育2015年iOS暑期班笔试面试基础考核题
- fork, exec, source
- 2013阿里巴巴安全工程师实习生招聘笔试小结
- 使用 GDB 调试多进程程序
- Android架构纵横谈之二——基于性能的考虑
- linux下面fork 函数的详细讲解
- 【C/C++】Linux下使用system()函数一定要谨慎
- fork的执行过程
- 一系列笔面试题
- fork()一次调用两次返回
- linux系统调用出错时的处理函数
- 进程知识点
- 百度2013校校前端笔试