01/10/2018, 08:27

File Descriptor là gì?

Trong linux có khái niệm File Descriptor khá khó hiểu, mình đọc nhiều giải thích rồi mà chưa tưởng tượng ra được.

Mọi người ai rành linux thì giúp mình với

Huy Do viết 10:38 ngày 01/10/2018

Bạn hiểu đơn giản là để nhắc đến 1 file thì phải có 1 cái gì cụ thể (sờ được, xoá được, tạo được) để mô tả nó , đó chính là file descriptor. Cái đó trong linux nó chỉ là 1 con số integer để kernel có thể phân biệt được giữa các file.
Do đó

  • File description chỉ là 1 số integer unique để phân biệt giữa các file
  • Lưu ý là socket, stdout, stdin, stderr… đều là file
viết 10:39 ngày 01/10/2018

Con số đó được gắn kèm vào file hay đặt ở đâu bạn?
Cái câu “Everything is a file” trong Linux mình cũng nghe rồi mà chưa hiểu rõ. Có phải stdin, stdout, socket… đều là file (tức là 1 tập hợp các bit nhị phân) luôn hả bạn, vậy nó phải nằm ở đâu đó trong HDD phải ko?

Huy Do viết 10:44 ngày 01/10/2018

FD được quản lý ở kernel, khi bạn tạo một file, thông tin sẽ nằm trong data structure được kernel trả lại cho bạn.
Stdin, out, socket đều là file , nằm ở một thư mục nào đó.
Bạn nên tìm một cuốn sách về linux để đọc , ví dụ như https://www.amazon.com/Design-UNIX-Operating-System/dp/0132017997 thay vì đi hỏi từng tí những kiến thức căn bản thế này.

Bài liên quan
0