/*注:本章I/O函数为不带缓存的系统调用*/
int open(const char* pathname, int oflag, .../*mode_t mode*/); 返回: 成功fd,错误-1
oflag:O_RDONLY,O_WDONLY,O_REWR;
O_APPEND,O_CREAT,O_EXCL,O_TRUNC,O_NOCTTY,O_NONBLOCK,O_SYNC;
int creat(const char* pathname, mode_t mode); 返回: 成功只写打开的fd,错误-1
<==>open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode);
int close(int filedes); 返回:成功0,错误-1
off_t lseek(int filedes, off_t offset, int whence); 返回:成功为新的文件位移,错误-1
whence:SEEK_SET,SEEK_CUR,SEEK_END
ssize_t read(int filedes, void* buf, size_t nbyte); 返回:读字节数,文件尾0,错误-1
ssize_t write(int filedes, void* buf, size_t nbyte); 返回:写字节数,错误-1
int dup(int filedes);
int dup2(int filedes, int filedes2); 返回:成功新的fd,错误-1
int fcntl(int filedes, int cmd, .../*int arg */); 返回:成功则依赖cmd,错误-1
cmd:F_DUPFD,F_GETFD,F_SETFD,F_GETFL,F_SETFL,F_GETOWN,F_SETOWN;
F_GETLK,F_SETLK,F_SETLKW
int ioctl(int filedes, int request, ...); 返回:错误-1,成功则为其他值
/dev/fd目录下为0,1,2等文件,打开文件/dev/fd/n等于复制已打开的描述符n
阅读(1065) | 评论(0) | 转发(0) |