这是我在考试中看到的问题:
解释代码行标记的情况 将到达图3.33中的printf(“LINE J”)。
我想到的唯一答案是:当fork返回0时,我们处于子进程中,因此j会被打印但是我觉得如果有任何其他可能性,请说出你的想法并不那么简单吗? / p>
答案 0 :(得分:1)
如果fork
有效,但execlp
没有,那个就会打印该行,并且仅在子流程中。
如果由于某种原因,fork失败(例如,您已超出资源配额),则不会创建子项,父项将只执行if (pid < 0)
代码。
如果fork
和execlp
都工作,execlp
使用/bin/ls
可执行文件替换子进程的内容,那么没有代码原点程序存在于此之后。
execlp
可能有多种方式失败,其中包括(不是详尽无遗的清单):
/bin/ls
可执行文件。 (a)虽然希望它会在你的路径某处,在这种情况下你最好使用"ls"
作为execlp
的第一个参数,这样它就可以了找到它。否则,使用execlp
并没有什么意义,您也可以使用execl
,因为当您使用/
开始使用可执行文件名时,您没有使用路径搜索功能。