AFAICS,子进程从 fork() 上的父进程继承 stdout/stdin。这让我想知道为什么以下代码不起作用:
int main(int argc, char *argv[])
{
char *earg[] = {"echo", "Hello", NULL};
if(fork() == 0) {
printf("running echo...\n");
execv("echo", earg);
printf("done!\n");
exit(0);
} else {
sleep(2);
}
return 0;
}
运行这个小程序时,两个 printf() 调用在控制台上显示得很好。但是对 echo 的调用不知何故丢失了!控制台上的输出只是:
running echo...
done!
有人可以向我解释为什么控制台上没有显示回显输出吗?我该如何解决这个问题?