我正在研究一個小程序,它使用管道和文件描述符獲取familliar,並花費大量時間調試無意義的問題。程序更改的行爲取決於調用fork的位置
我花了很多時間思考我誤解了文件描述符,當它只是程序行爲的不同取決於我在哪裏使用fork。
int main(void)
{
int fid;
int p[2];
pipe(p);
char buf[20];
fid = fork();
if (fid==0){
close(p[1]);
dup2(p[0],0);
close(p[0]);
execlp("cat","cat",(char *)NULL);
}
else{
close(p[0]);
dup2(p[1],1);
close(p[1]);
execlp("ls","ls",(char *)NULL);
}
return 0;
}
給我該目錄中什麼的預期輸出。我把輸出放到貓身上。
如果我將叉子移動到管道(p)上方;我不會得到任何輸出。我不明白爲什麼會發生這種情況?