我是C的新手并且想知道当子进程调用exec系统调用来执行新程序时会发生什么?
答案 0 :(得分:2)
答案 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);
}
}
我希望它有所帮助。