fork概念选择题,求详细解释
下面是一个进程P(p)的一段伪代码,调用fork(),生成一个子进程p(c),有可能下面的exec()调用失败,codie -A,codie -B,codie -C都不会产生错误,也没有跳转命令..
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
应该是这样吧
------解决方案--------------------这么多选项
子进程如果执行成功,可能只会执行exec("esegibile-B");
------解决方案--------------------能不能运行code D要看各个p,c在各自的代码区运行的怎么样如果异常或有类似于exit()函数就不能运行code
D了
------解决方案--------------------++,没注意那个exec~~