【发布时间】:2019-04-24 10:43:11
【问题描述】:
我是系统编程新手,很好奇 exec 函数的工作原理。我的第一个问题是为什么孩子在调用 exec 后从不打印“我是孩子”。 exec 如何替换子进程?我的第二个问题是为什么程序(在调用 exec 之后)继续并在它完全终止之前再请求一个命令行参数。我不确定这里发生了什么。任何人都可以解释发生了什么将不胜感激。代码如下:
#include <stdio.h>
#include <unistd.h>
int main(void) {
if(fork() == 0){
printf("Hello from child!\n");
execl("/usr/bin/sort", "sort", "talk.c",NULL);
printf("I'm the child\n");
}
else{
printf("Hello from parent!\n");
printf("Iam the parent\n");
}
return 0;
}
【问题讨论】:
-
exec不是用来运行命令然后返回的,它代替了调用进程。execl之后什么都没有发生。 -
第一部分已经回答,第二部分是……什么?你能把正在运行的会话复制粘贴到问题中吗