当前位置: 技术问答>linux和unix
fork概念选择题,求详细解释
来源: 互联网 发布时间:2017-02-10
本文导语: 下面是一个进程P(p)的一段伪代码,调用fork(),生成一个子进程p(c),有可能下面的exec()调用失败,codie -A,codie -B,codie -C都不会产生错误,也没有跳转命令.. pid = fork(); if(pid > 0) codie -A; else if(pid == 0) exec...
下面是一个进程P(p)的一段伪代码,调用fork(),生成一个子进程p(c),有可能下面的exec()调用失败,codie -A,codie -B,codie -C都不会产生错误,也没有跳转命令..
A 进程P(c)一定运行 CODICE -A部分代码,能运行codice -D部分代码;
B 进程P(c)一定运行 CODICE -A部分代码,不会运行codice -D部分代码;
C 进程P(p)一定运行 CODICE -A部分代码,能运行codice -D部分代码;
D 进程P(p)一定运行 CODICE -A部分代码,不会运行codice -D部分代码;
E 进程P(c)一定运行 CODICE -B部分代码,能运行codice -D部分代码;
F 进程P(c)一定运行 CODICE -B部分代码,不运行codice -D部分代码;
G 进程P(c)运行 CODICE -C部分代码,运行codice -D部分代码;
H 进程P(c)运行 CODICE -C部分代码,不运行codice -D部分代码;
I 进程P(p)一定运行 CODICE -B部分代码,能运行codice -D部分代码;
J 进程P(p)一定运行 CODICE -B部分代码,不运行codice -D部分代码;
K 进程P(p)能运行 CODICE -C部分代码,能运行codice -D部分代码;
L 进程P(p)运行 CODICE -C部分代码,不运行codice -D部分代码;
M 以上都不正确
-------------------------------------------------------------------------------
哪位高手帮忙解释说明,每个选项,多谢
pid = fork();
if(pid > 0)
codie -A;
else if(pid == 0)
exec("esegibile-B");
else
codie -C;
codice -D;
A 进程P(c)一定运行 CODICE -A部分代码,能运行codice -D部分代码;
B 进程P(c)一定运行 CODICE -A部分代码,不会运行codice -D部分代码;
C 进程P(p)一定运行 CODICE -A部分代码,能运行codice -D部分代码;
D 进程P(p)一定运行 CODICE -A部分代码,不会运行codice -D部分代码;
E 进程P(c)一定运行 CODICE -B部分代码,能运行codice -D部分代码;
F 进程P(c)一定运行 CODICE -B部分代码,不运行codice -D部分代码;
G 进程P(c)运行 CODICE -C部分代码,运行codice -D部分代码;
H 进程P(c)运行 CODICE -C部分代码,不运行codice -D部分代码;
I 进程P(p)一定运行 CODICE -B部分代码,能运行codice -D部分代码;
J 进程P(p)一定运行 CODICE -B部分代码,不运行codice -D部分代码;
K 进程P(p)能运行 CODICE -C部分代码,能运行codice -D部分代码;
L 进程P(p)运行 CODICE -C部分代码,不运行codice -D部分代码;
M 以上都不正确
-------------------------------------------------------------------------------
哪位高手帮忙解释说明,每个选项,多谢
|
pid = fork();
if(pid > 0)
codie -A;
else if(pid == 0)
exec("esegibile-B");
else
codie -C;
codice -D;
假设fork成功 父进程 A+D 子进程 B+D
fork 失败 C+D
应该是这样吧
if(pid > 0)
codie -A;
else if(pid == 0)
exec("esegibile-B");
else
codie -C;
codice -D;
假设fork成功 父进程 A+D 子进程 B+D
fork 失败 C+D
应该是这样吧
|
这么多选项
子进程如果执行成功,可能只会执行exec("esegibile-B");
子进程如果执行成功,可能只会执行exec("esegibile-B");
|
能不能运行code D要看各个p,c在各自的代码区运行的怎么样如果异常或有类似于exit()函数就不能运行code
D了
D了
|
++,没注意那个exec~~