1166839
File descriptor
https://vi.wikipedia.org/wiki?curid=1166839
Title: File descriptor
Trong hệ điều hành máy tính Unix và kiểu Unix, file descriptor (tạm dịch: mô tả tập tin), thường được viết tắt là fd hay fildes, là định danh (handler) độc nhất cho tập tin hoặc tài nguyên đầu vào/đầu ra khác, chẳng hạn như pipe hoặc socket mạng.
File descriptor thường có giá trị nguyên không âm, còn giá trị âm thì được dành để biểu thị trạng thái "không có giá trị" hoặc tình trạng bị lỗi.
File descriptor là một phần của POSIX API. Mỗi tiến trình Unix (ngoại trừ daemon) phải có 3 file descriptor POSIX tiêu chuẩn, tương ứng với 3 luồng tiêu chuẩn:
Tổng quan.
Trong bản thực hiện truyền thống của Unix, file descriptor lập chỉ mục vào trong bảng file descriptor dành riêng cho mỗi tiến trình, kernel có vai trò bảo quản bảng này, kế đến lập chỉ mục vào trong một bảng liệt kê các file đang được mở từ tất cả tiến trình, bảng đó gọi là bảng file và dùng chung cho toàn hệ thống. Bảng này ghi lại "chế độ" mà file (hoặc tài nguyên khác) được mở lên: để đọc, để ghi, để phụ chú, và có thể là chế độ nào đó khác. Nó cũng lập chỉ mục vào một bảng thứ ba được gọi là bảng inode mô tả tập tin thực tế nằm bên dưới. Để thi hành lên đầu vào hoặc đầu ra thì tiến trình sẽ truyền file descriptor vào kernel thông qua lệnh gọi hệ thống và kernel sẽ truy cập file giùm cho quá trình. Tiến trình không có cách nào truy cập trực tiếp vào file hoặc bảng inode.
Trên Linux, tập hợp các file descriptor được mở trong tiến trình thì có thể được truy cập theo đường dẫn codice_1, trong đó PID là định danh tiến trình. File descriptor codice_2 là codice_3, codice_4 là codice_5 và codice_6 là codice_7. Tiến trình đang chạy còn có thể truy cập các file descriptor của chính mình thông qua các thư mục lối tắt là codice_8 và codice_9 thay vì dùng đường dẫn cụ thể như thế kia.