Có người đề cập rằng có ba tệp khác nhau mà một quy trình luôn mở. Điều đó có nghĩa là gì? Chúng là những tập tin gì?
Có người đề cập rằng có ba tệp khác nhau mà một quy trình luôn mở. Điều đó có nghĩa là gì? Chúng là những tập tin gì?
Câu trả lời:
Các tập tin được mở không phải là tập tin trên đĩa. Chúng là các luồng (tệp giả), stdin (0), stdout (1) và stderr (2). Đây là đoạn trích có liên quan từ tiêu chuẩn POSIX :
Một tệp có bộ đệm liên quan được gọi là luồng và được khai báo là con trỏ tới kiểu TẬP TIN. Hàm fopen () sẽ tạo dữ liệu mô tả nhất định cho luồng và trả về một con trỏ để chỉ định luồng trong tất cả các giao dịch tiếp theo. Thông thường, có ba luồng mở với các con trỏ không đổi được khai báo trong tiêu đề và được liên kết với các tệp mở tiêu chuẩn.
Khi khởi động chương trình, ba luồng phải được xác định trước và không cần phải mở một cách rõ ràng: đầu vào tiêu chuẩn (để đọc đầu vào thông thường), đầu ra tiêu chuẩn (để ghi đầu ra thông thường) và lỗi tiêu chuẩn (để ghi đầu ra chẩn đoán). Khi mở, luồng lỗi tiêu chuẩn không được đệm hoàn toàn; các luồng đầu vào tiêu chuẩn và đầu ra tiêu chuẩn được đệm hoàn toàn khi và chỉ khi luồng có thể được xác định không tham chiếu đến một thiết bị tương tác.