今天到实验室一个同学问了我这个问题,说是今年阿里的笔试题,问 fork()||fork();这条语句执行后,一共生成了几个子进程。刚看到的时候懵了一下,然后仔细的想了想,这其实是在从语法和linux系统知识两个方面在考察,平时写程序的时候,&&或||这类判断可谓经常用到,但是很少去考虑其细节,所以他问我的时候一时间还真不知道怎么下手,于是写了个简单的程序测试了一下。
#include <stdio.h>
#include <unistd.h>
int main()
{
fork()||fork();
printf("created a process\n");
return 0;
}
打印结果如下:
created a process
created a process
created a process
很显然,这条语句创建了3个进程,那么这是为什么呢?
思考了一下决定还是从本质开始分析,例如一个逻辑判断语句:
a || b<pre name="code" class="cpp">a && b
以前在我的脑海里,只会简单思考:a和b只要有一个为1,那么结果就是1,否则是0ÿ