Khi đọc về đường ống trong Lập trình nâng cao trong môi trường UNIX, tôi nhận thấy rằng sau ngã ba, cha mẹ có thể close()
đầu đọc của ống và không đóng đầu đọc đứa trẻ. Khi một nhánh xử lý, các bộ mô tả tập tin của nó có được giữ lại không?Hành vi của một đường ống sau khi rẽ nhánh()
Ý tôi là trước khi ngã ba, bộ đọc mô tả tập tin có số lượng giữ lại là 1, và sau ngã ba 2. Khi cha mẹ đóng mặt đọc, fd chuyển thành 1 và được mở cho đứa trẻ. Đây có phải là những gì đang xảy ra không? Hành vi này cũng có xảy ra đối với các bộ mô tả tệp thông thường không?
... trừ khi bạn thực hiện một số thủ thuật với http://www.opengroup.org/onlinepubs/009695399/functions/pthread_atfork.html (mà bạn không nên, đó không phải là những gì nó có cho) – ephemient
Chắc chắn, nhưng những gì bạn đã đăng không phải là 'fork()' mà là một biến thể của nó. – pajton
Không, ý tôi là 'pthread_atfork' có thể thay đổi hành động của chương trình tại thời điểm' fork' thành (ví dụ) bao gồm các mô tả tệp đóng. Nhưng theo mặc định điều đó không xảy ra, và đó là một điều kỳ lạ để lạm dụng giao diện đó dù sao đi nữa. – ephemient