文件描述符的解决方法

如题所述

第1个回答  2016-05-13

对于ANSI C规范中定义的标准库的文件I/O操作。ANSI C规范给出了一个解决方法,就是使用FILE结构体的指针。事实上,UNIX/Linux平台上的FILE结构体的实现中往往都是封装了文件描述符变量在其中。
在UNIX/Linux平台上,对于控制台(Console)的标准输入,标准输出,标准错误输出也对应了三个文件描述符。它们分别是0,1,2。在实际编程中,如果要操作这三个文件描述符时,建议使用<unistd.h>头文件中定义的三个宏来表示: STDIN_FILENO, STDOUT_FILENO以及STDERR_FILENO。 与文件描述符相关的操作
文件描述符的生成
open(), open64(), creat(), creat64()
socket()
socketpair()
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()

相似回答