http://m.blog.csdn.net/article/details?id=49406611
程序一:
#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个进程。