标签:
====文件IO====
Linux系统IO操作都是使用文件描述符来代表打开的文件,一个非负的的
整数,它被用来指所有类型的打开的文件,包括管道,FIFO,网络套接
字,终端,设备和一般文件。每个进程都有自己的一套文件描述符
经常使用的三个文件描述符是:
标准输入(stdin, STDIN_FILENO, 0)
标准输出(stdout, STDOUT_FILENO, 1)
标准错误(stderr, STDERR_FILENO, 2)
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags, ... /* mode_t mode */);
打开一个文件,返回文件描述符,失败返回-1,并设置errno值
pathname表示文件路径, flags表示访问权限, mode表示设置文件的权限
flags的值通常如下所示的组合:
O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 读写打开
...
#include <unistd.h>
ssize_t read(int fd, void *buffer, size_t count);
从文件读取最多count个字节到buffer中,成功返回读取的字节数,0表示文件读到
结尾EOF,-1表示出错了
#include <unistd.h>
ssize_t write(int fd, void *buffer, size_t count);
从buffer中取出count个字节,写入fd对应的文件中,返回实际写入的
字节数,-1表述错误
#include <unistd.h>
int close(int fd);
关闭文件,0成功,-1失败
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
改变文件的偏移量,offset相对whence的偏移量,成功返回新的偏移量,-1错误
偏移量:表示文件读/写到了哪个位置
whence的值:
SEEK_SET(文件开头)
SEEK_CUR(当前偏移)
SEEK_END(文件结尾)
#include <sys/ioctl.h>
int ioctl(int fd, int request, ... /* argp */);
IO通用操作接口,操作类型繁多,具体可以查阅帮助手册,返回值依赖request,-1错误
#include <fcntl.h>
int fcntl(int fd, int cmd, ...);
操作文件的属性,错误返回-1,可以获取或是设置文件的各种属性
#include <unistd.h>
int dup(int oldfd);
拷贝文件描述符,返回一个没有使用的最小文件描述符,错误返回-1值
#include <unistd.h>
int dup2(int oldfd, int newfd);
拷贝oldfd文件描述符为newfd文件描述符,如果newfd已经被
使用了,首先关闭它
#include <stdlib.h>
int mkstemp(char *template);
使用文件模版路径创建一个临时文件,路径后6个字节必须为XXXXXX,创建
保证原子行,错误返回-1值
标签:
原文地址:http://www.cnblogs.com/y2ghost/p/4356386.html