子进程进行的exec系统调用的结果

时间:2018-01-16 01:52:49

标签: c

我是C的新手并且想知道当子进程调用exec系统调用来执行新程序时会发生什么?

2 个答案:

答案 0 :(得分:2)

来自exec man page

  

exec()函数系列取代了当前的过程映像          使用新的过程映像。

因此,子进程被exec&#d; d进程替换。

答案 1 :(得分:2)

exec()函数系列替换 current process并将new process image指定为其第一个参数。

int execl(const char *path, const char *arg, ...);

例如

main() {
        execl("/bin/ls","ls",NULL);
}

当您执行上述代码时,您的current running process(a.out)将被名为 ls new process取代。

您可以使用fork()并了解详情。

main() {
        if(fork()==0){ /** child process is in sleep for 5 second**/
                sleep(5);
                exit(0);/** once job is done child need to send it's status to parent process using exit **/
        }
        else { /** parent process **/
                wait(0);/** parent waits upto child got done, then it replaces whole child child pcb with parent PCB **/
                execl("/bin/ls","ls",NULL);
        }
}

我希望它有所帮助。