2012-11-14 39 views
9

Tôi đang tìm hiểu về lập trình mạng trong Unix và hiện đang cố gắng hiểu khái niệm về bộ mô tả ổ cắm và tệp. Từ những gì tôi đã hiểu một bộ mô tả tập tin chỉ đơn giản là một vị trí trong một mảng con trỏ (Bảng mô tả tệp?) Và các con trỏ này trỏ đến một tệp nào đó trong bộ nhớ.Bộ mô tả ổ cắm và tệp

Tạo mô tả bộ chia sẻ mảng này với các bộ mô tả tệp, nhưng con trỏ thay vào đó chỉ một ổ cắm. Hoặc là có cái gì khác mà chỉ được sử dụng cho ổ cắm?

Mảng này có duy nhất cho mọi ứng dụng/quy trình không?

Trả lời

10

Có, ổ cắm cũng là các chỉ mục trong cùng một bảng với tệp. Ít nhất đối với các hệ thống UNIX (như Linux và OSX), Windows là khác nhau, đó là lý do tại sao bạn không thể sử dụng ví dụ: readwrite để nhận và gửi dữ liệu.

Mỗi quá trình có bảng mô tả "tệp" riêng.

+0

Việc giải thích của tôi về các bộ mô tả tệp có đúng không và bạn có thể nói bảng mô tả tệp là một dạng đa hình nào đó không? – Carlj901

+0

@ Carlj901 Có, loại. Bộ mô tả tệp (như được trả về bởi 'mở' hoặc' socket') là một chỉ mục trong bảng hoặc con trỏ này, sau đó con trỏ này có thể trỏ đến các cấu trúc khác nhau tùy thuộc vào đó là một tệp hay một ổ cắm. –

1

Ổ cắm không là gì ngoài tệp trong hệ điều hành UNIX. Ngay cả mọi thứ được coi là một tập tin trong hệ điều hành UNIX. Bất cứ khi nào chúng ta tạo một socket, một entry được thực hiện trong bảng mô tả tập tin chứa các chuẩn i/o và các lỗi tiêu chuẩn và các chi tiết khác. Bộ mô tả tập tin hoạt động như một con trỏ đến Bảng Tệp chứa thông tin về hành động sẽ được thực hiện nghĩa là đọc, ghi, v.v. và nó chứa các con trỏ tới bảng inode của tệp cụ thể đó và bạn có thể biết inode chứa tất cả các deatils của một tập tin.

+0

Mọi thứ có được coi là một tệp trong UNIX không? Giống như tất cả các quy trình? Ngoài ra làm thế nào để xem tập tin ổ cắm hoặc những gì là nó chứa? –

Các vấn đề liên quan