AFAICS,子進程從fork()父進程繼承stdout/stdin。這讓我想知道爲什麼下面的代碼不起作用:fork()後execv()的回聲問題
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()的調用會在控制檯上就好了。但是,呼籲回聲不知何故會丟失!控制檯上的輸出只是:
running echo...
done!
有人可以向我解釋爲什麼echo輸出沒有出現在控制檯上?我該如何解決這個問題?
非常感謝!這解決了問題。 – Andreas