exec()
系统调用的这个非常简单的示例。在这里,我试图两次致电execlp()
。但是,我没有得到例外输出。它仅显示当前目录的第一次调用的输出。
#include <stdio.h>
#include <unistd.h>
int main() {
int ret1,ret2;
ret1 = execlp( "pwd", "pwd", (char *) 0);
ret2 = execlp( "date", "date", (char *) 0);
return 0;
}
输出:
/home/aniket
在这里,我看不到日期的输出。任何人都可以解释为什么会发生这种情况?
答案 0 :(得分:5)
execlp()
使用新的过程映像替换当前过程映像。
它不返回(除非启动新进程时出错)。
因此永远不会达到第二个execlp()
来电。
答案 1 :(得分:1)
答案 2 :(得分:0)
#include <stdio.h>
#include <unistd.h>
int main() {
int ret1,ret2;
pid_t chd;
chd=fork();
if(chd==0)
ret1 = execlp( "pwd", "pwd", (char *) 0);
else if(chd>0)
ret2 = execlp( "date", "date", (char *) 0);
return 0;
}