日期:2014-05-16  浏览次数:20824 次

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了

------解决方案--------------------
引用:
能不能运行code D要看各个p,c在各自的代码区运行的怎么样如果异常或有类似于exit()函数就不能运行code
D了
++,没注意那个exec~~