在学习fork和exec族函数的时候遇到一件怪事:
int main(int argc, char**argv){
pid_t child_pid = fork();
if (child_pid== 0){
printf("=============hello==========");
execlp("ls","ls","/home/yangh/", "-r", NULL);
perror("execlp");
exit(1);
}在这里的''=============hello==========''莫名打不出来,按理说:exec 函数会替换当前进程的代码段和数据段,并重新初始化进程的执行上下文;所以,在 exec 函数之后的代码不会被执行.但这关我exec前的代码屁事.
瞎搞一番之后发现在printf后加个换行符就打的出来了printf("=============hello==========\n");
我也不知道为什么,也许是终端的问题?
在学习fork和exec函数时,作者发现==hello==的输出在没有换行符的情况下无法显示。按照预期,exec函数应替换当前进程空间,但这个现象似乎与此冲突。添加换行符后,输出正常,提示可能是终端显示的问题。

1347

被折叠的 条评论
为什么被折叠?



