Tôi có kịch bản sau đây.Chúng ta có cần đóng đầu đọc của một đường ống rõ ràng có đầu ghi đã đóng không?
Tôi tạo đường ống.
Chia nhỏ quy trình con.
trẻ em đóng vai trò quant đọc cuối của ống rõ ràng và ghi vào ghi cuối của ống và lối thoát hiểm mà không đóng bất cứ điều gì (exit nên đóng tất cả các file descriptor/ống mở trên danh nghĩa của đứa trẻ, tôi đoán).
Cha mẹ đóng đầu ghi của ống rõ ràng và đọc từ đầu đọc của đường ống sử dụng
fgets
trả về NULL. tức là nó đọc hoàn toàn.
Bây giờ câu hỏi của tôi là, tại sao phụ huynh cần phải đóng đầu đọc của ống một cách rõ ràng khi đọc xong? Không phải là nó khôn ngoan cho hệ thống để xóa các đường ống hoàn toàn khi dữ liệu hoàn chỉnh đã được đọc từ đầu đọc?
Tôi dint đóng đầu đọc một cách rõ ràng trong bố mẹ và tôi có lỗi Too many file descriptors
sớm hay muộn trong khi mở nhiều đường ống hơn. Giả thiết của tôi là hệ thống sẽ tự động xóa một đường ống khi kết thúc ghi của nó bị đóng và dữ liệu đã được đọc hoàn toàn từ đầu đọc. Cos bạn không thể từ một đường ống hai lần!
Vì vậy, lý do cơ bản đằng sau hệ thống không xóa đường ống khi dữ liệu đã được đọc hoàn toàn và ghi kết thúc là gì?
"Bạn không thể từ một đường ống hai lần!" ??? –
@KerrekSB Những gì tôi có nghĩa là bạn có thể đọc cùng một đường ống hai lần nhưng sẽ thấy EOF lần thứ hai phải không? –