输出中的execlp()系统调用错误

时间:2014-03-01 22:53:00

标签: c system-calls

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

在这里,我看不到日期的输出。任何人都可以解释为什么会发生这种情况?

3 个答案:

答案 0 :(得分:5)

execlp() 使用新的过程映像替换当前过程映像。 它不返回(除非启动新进程时出错)。

因此永远不会达到第二个execlp()来电。

答案 1 :(得分:1)

execlp ()取代了被调用的进程调用它的进程。

来自this链接:

“exec()系列函数用新的过程映像替换当前过程映像。”

要保留这两个流程,请使用fork().

答案 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;
}