本文主要是介绍CareerCup Fork Problem,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
How many times “Hello World” is printed by following program?int main()
{
if(fork() && fork())
{
fork();
}
if(fork() || fork())
{
fork();
}
printf(“Hello world”);
return 0;
}
a. 16
b. 20
c. 24
d. 64
----------------------------------------------------------------
b.20
----------------------------------------------------------------
pid_t fork( void);
(pid_t 是一个 宏定义,其实质是int 被定义在# include< sys/types.h>中)
返回值: 若成功调用一次则返回两个值,子进程返回0, 父进程返回子进程ID;否则,出错返回-1
because:
#include <stdio.h>
#include <unistd.h>
using namespace std;
int main() {if (fork() && fork())printf("Hello World\n");return 0;
}
The result is 1 Hello World. Only the parent process could print and the child process couldn't print.
#include <stdio.h>
#include <unistd.h>
using namespace std;
int main() {if (fork() || fork())printf("Hello World\n");return 0;
}
The result is 2 Hello Worlds, the child process will execute the fork after ||, but for && the child process will start after printf. Since the parent process get an ID and child process get an 0.
#include <stdio.h>
#include <unistd.h>
using namespace std;
int main() {if (fork() || fork() || fork())printf("Hello World\n");return 0;
}
The result is 3 Hello World.
#include <stdio.h>
#include <unistd.h>
using namespace std;
int main() {if (fork() || fork() || fork())fork();printf("Hello World\n");return 0;
}
7 Hello worlds!
这篇关于CareerCup Fork Problem的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!