文件描述符介绍(转载)

内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。
文件描述符:在linux系统中打开文件就会获得文件描述符,它是个很小的正整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。文件指针:C语言中使用文件指针做为I/O的句柄。文件指针指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括一个缓冲区和一个文件描述符。而文件描述符是文件描述符表的一个索引,因此从某种意义上说文件指针就是句柄的句柄(在Windows系统上,文件描述符被称作文件句柄)。


文件描述符的生成
open(), open64(), creat(), creat64()
socket()
pipe()
与单一文件描述符相关的操作
read(), write()
recv(), send()
recvmsg(), sendmsg()
sendfile()
lseek(), lseek64()
fstat(), fstat64()
fchmod()
fchown()
与复数文件描述符相关的操作
select(), pselect()
poll()
与文件描述符表相关的操作
close()
dup()
dup2()
fcntl (F_DUPFD)
fcntl (F_GETFD and F_SETFD)
改变进程状态的操作
fchdir()
mmap()
与文件加锁的操作
flock()
fcntl (F_GETLK, F_SETLK and F_SETLKW)
lockf()
与套接字相关的操作
connect()
bind()
listen()
accept()
getsockname()
getpeername()
getsockopt(), setsockopt()
shutdown()

猜你喜欢

转载自blog.csdn.net/IT8343/article/details/80947205