Đặc tả tập tin

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm
Đặc tả tập tin của input, output, và error

Trong lập trình máy tính, một đặc tả tập tin (tiếng Anh: file descriptor, viết tắt FD) là một chỉ số trừu tượng để truy cập một tập tin. Thuật ngữ này thường được sử dụng trong các hệ điều hành POSIX. Trong thuật ngữ của Microsoft Windows và khái niệm của thư viện I/O chuẩn C, thì được gọi là "file handle", mặc dù kỹ thuật đối với các đối tượng khác nhau(Xem phía dưới).

Trong POSIX, một đặc tả tập tin là một số nguyên, trong C có kiểu là int. Có 3 đặc tả tập tin chuẩn của POSIX dùng cho cho tất cả các quá trình:

Giá trị Tên
0 Standard Input (stdin)
1 Standard Output (stdout)
2 Standard Error (stderr)

Nói chung, đặc tả tập tin là chỉ số cho một thực thể trong kernel (lưu trữ cấu trúc dữ liệu) cái mà chứa các chi tiết của tất cả các tập tin mở. Trong POSIX, cấu trúc dữ liệu này được gọi là bảng đặc tả tập tin (file descriptor table), mỗi quá trình (process) sẽ có bảng đặc tả tập tin của riêng nó. Người sự dụng sẽ thông qua một chỉ số trừu tưởng để truy cập tới kernel bằng cách dùng một system call và kernel sẽ truy cập tới đặc tả tập tin thay cho ứng dụng dựa vào chỉ số. Một ứng dụng không thể đọc hay viết trực tiếp vào bảng đặc tả tập tin.

Trong các hệ thống hệ Unix, đặc tả tập tin có thể là các tập tin, các thư mục, block hoặc là character device (còn được gọi là "các tập tin đặc biệt"), socket, FIFO (còn được gọi là ống dẫn có tên), hoặc là unnamed ống dẫn.

Đối tượng FILE * trong C standard I/O library là một con trỏ chỉ để một cấu trúc dữ liệu được quản lý bằng các thư viện; một trong những cấu trúc thường bao gồm một mô tả tập tin thực tế thấp cấp cho các đối tượng trong câu hỏi trên như hệ thống Unix.

Hơn nữa, Microsoft Windows cũng sử dụng thuật ngữ xử lý tập tin để tham khảo xây dựng ở mức độ thấp hơn, giống như mô tả tập tin của POSIX. Thư viện C của Microsoft cũng cung cấp các chức năng tương thích dùng để "wrap" các xử lý để hỗ trợ các quy ước POSIX giống như mô tả tập số nguyên như nói ở trên.

Hoạt động của các đặc tả tập tin[sửa | sửa mã nguồn]

Hệ Unix cung cấp các cách thức mà hoạt động theo đặc tả tập tin:

Tạo các đặc tả tập tin[sửa | sửa mã nguồn]

  • open(), open64(), creat(), creat64()
  • socket()
  • accept()
  • socketpair()
  • pipe()

Chỉ số của đặc tả tập tin[sửa | sửa mã nguồn]

  • dirfd()
  • fileno()

Các hoạt động của một đặc tả tập tin[sửa | sửa mã nguồn]

  • read(), write()
  • readv(), writev()
  • pread(), pwrite()
  • recv(), send()
  • recvmsg(), sendmsg() (cho phép gửi các FDs)
  • sendfile()
  • lseek(), lseek64()
  • fstat(), fstat64()
  • fchmod()
  • fchown()
  • fdopen()
  • gzdopen()
  • ftruncate()
  • fsync()
  • fdatasync()
  • fstatvfs()

Thao tác trên nhiều tập tin[sửa | sửa mã nguồn]

Thao tác trên bảng đặc tả tập tin[sửa | sửa mã nguồn]

  • close()
  • dup() (bản sao của đặc tả tập tin hiện có đảm bảo được số lượng thấp nhất có sẵn đặc tả tập tin)
  • dup2() (đặc tả tập tin mới sẽ có giá trị được thông qua như một tham số)
  • fcntl (F_DUPFD)
  • fcntl (F_GETFD and F_SETFD)

Hoạt động làm thay đổi trạng thái quá trình[sửa | sửa mã nguồn]

  • fchdir() (thiết lập thư mục làm việc hiện tại của quá trình dựa trên một thư mục đặc tả tập tin)
  • mmap() (bản đồ phạm vi của một tập tin vào không gian địa chỉ của quá trình)

Tập tin khóa[sửa | sửa mã nguồn]

  • flock()
  • fcntl (F_GETLK, F_SETLK and F_SETLKW)
  • lockf()

Sockets[sửa | sửa mã nguồn]

  • connect()
  • bind()
  • listen()
  • accept() (tạo một đặc tả tập tin cho một kết nối đến)
  • getsockname()
  • getpeername()
  • getsockopt()
  • setsockopt()
  • shutdown() (tắt một hoặc cả hai nửa của một kết nối full duplex)

Miscellaneous[sửa | sửa mã nguồn]

  • ioctl() (một bộ sưu tập lớn của các hoạt động trên một đặc tả tập tin duy nhất, thường gắn liền với một thiết bị)

hoạt động sắp tới[sửa | sửa mã nguồn]

Một loạt các hoạt động mới trên mô tả tập tin đã được thêm vào hệ thống Unix như hiện đại, cũng như nhiều thư viện C, Các mà sẽ được chuẩn hóa trong POSIX.[1]

  • openat()
  • faccessat()
  • fchmodat()
  • fchownat()
  • fstatat()
  • futimesat()
  • linkat()
  • mkdirat()
  • mknodat()
  • readlinkat()
  • renameat()
  • symlinkat()
  • unlinkat()
  • mkfifoat()
  • fdopendir()

Native API của họ hệ điều hành Windows NT cũng cho phép người gọi để chỉ định một thư mục gốc khi họ mở một tập tin hoặc đối tượng khác theo tên.[2]

Xem thêm[sửa | sửa mã nguồn]

  • lsof - một tiện ích hiển thị thông tin về đặc tả tập tin mở

Tham khảo[sửa | sửa mã nguồn]

  1. ^ Extended API Set, Part 2. The Open Group. October năm 2006. ISBN 1931624674. 
  2. ^ ZwCreateFile in MSDN Library

Bản mẫu:Object-capability security