Tôi đã thử nghiệm với fork()
và chuyển hướng để kiểm tra xem các chỉ đường lại được thực hiện trong phụ huynh có áp dụng cho trẻ không. Tôi đã viết chương trình đơn giản sau đâyTuyên bố trước khi in() in hai lần
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
freopen("error.txt", "w+t", stdout); // From now on, stdout = error.txt
printf (" ERROR! WHY DONT U UNDERSTAND?\n");
if (fork() == 0)
{
printf(" I AM CHILD\n");
exit(0);
}
else-
{
printf (" EITHER I AM A PARENT OR SOMETHING GOT SCREWED\n");
}
return 0;
}
Sản lượng (error.txt
) tôi nhận được
ERROR! WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR! WHY DONT U UNDERSTAND?
I AM CHILD
Đáng ngạc nhiên, ERROR! WHY DONT U UNDERSTAND?
là in ấn hai lần mặc dù nó xuất hiện nhiều trước khi fork()
được gọi và nên chỉ được in một lần bởi cha mẹ.
Có ai có thể làm sáng tỏ điều này không?
Tôi không chắc chắn về điều này, nhưng chắc chắn rằng bạn xả io-bộ đệm, trước ngã ba. có lẽ các bộ đệm được sao chép vào đứa trẻ. – lupz
Điều này sẽ làm cho một câu hỏi phỏng vấn tuyệt vời! – dasblinkenlight