POSIX 定义了 STDIN_FILENO、STDOUT_FILENO 和 STDERR_FILENO 来代替 0、1、2。这三个符号常量的定义位于头文件unistd.h。
每个进程可以打开的文件的多少取决于系统内存的大小 及管理员的设定。
文件描述符与包括相关信息(如文件的打开模式、文件的位置类型、文件的初始类型等)的文件对象相关联,这些信息被称作文件的上下文。
进程获取文件描述符的方法:
~本机子例程open
~本机子例程create (当用fork子进程创建文件时会获得其父进程所有文件描述符副本) , 这些在执行fork 时打开。
~从父进程继承 (允许访问父进程所使用的所有文件)
建议使用头文件中定义的三个宏来表示: STDIN_FILENO(标准输入) , STDOUT_FILENO (标准输出), STDERR_FILENO(标准错误)。
EXIT_FAILURE 可以作为exit()的参数来使用,表示没有成功地执行一个程序。
EXIT_SUCCESS 作为exit()的参数来使用,表示成功地执行一个程序
memset()函数原型
void *memset(void *s, int ch,size_t n);
将s所指向的内存中后n个字节用ch代替,然后返回指针s ,通常为新申请的内存做初始化,也是对较大型结构体或数组清零的最快方法。
文件描述符的生成
open(), open64(), creat(), creat64()
socket()
socketpair()
pipe()
与单一文件描述符相关的操作
read(), write()
recv(), send()
recvmsg(),sendmsg()
sendfile()
lseek(), lseek64()
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(