在学习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");
我也不知道为什么,也许是终端的问题?