在linux系统中,所有的设备也都可以看做是文件,与传统的文件一样,利用系统调用或者C函数就可以实现对其操作。下面罗列几个常用的函数:
一 creat函数
函数原型为:int creat( const char *pathname, mode_t mode);
pathname 指文件的名字,可以包含目录,如果没有目录信息,则在当前工作目录下创建指定的文件。
mode 如下:
S_IRUSR 只读方式
S_IWUSR 只写方式
S_IXUSR 执行方式
S_IRWXU 可读可写可执行
二 open 函数
该函数有两个原型,分别为:
int open( const char * pathname, int flags);
int open( const char * pathname, int flags, mode_t mode);
pathname 指文件的名字,可以包含目录,如果没有目录信息,则在当前工作目录下创建指定的文件。
flags 文件的属性(比较多,列一些常用的)
O_RDONLY 只读的方式打开文件;
O_WRONLY 只写的方式打开文件;
O_RDWR 读写方式打开文件;
O_CREAT 如果文件不存在,则自动创建文件;同时还要指定文件的属性,就要调用三个参数的函数了。
O_TRUNC 如果文件存在,并且以写的方式打开文件,则文件长度清零,原来文件中的数据也会丢失;
O_APPEND 追加的方式读写文件,写入的数据自动添加到文件的尾部;
O_NONBLOCK 以非阻塞的方式打开文件,无论有无数据读写,都会立即返回到进程中;
O_SYNC 以同步的方式打开文件。
三 read函数
函数原型
int read(int fd, void * buf, int count);
从指定的文件中读取count个字节数据到buf中,返回实际读取成功的字节数,有可能文件中剩下的字节小余count。返回0表示已经读到文件尾部或无可以读取的数据,文件读写位置随着读取的位置而变动。返回-1则表示出错了。
四 write函数
函数原型
int write(int fd, const void * buf, int count);
从buf中写count个字节的数据到文件fd中,返回实际写入的字节数。-1表示出错了。
五 lseek函数
函数原型:
int lseek(int fd, off_t offset, int whence);
文件指针从whence除异动offset个字节,返回当前指针到文件头处的偏移量,whence为SEEK_SET表示文件开始,SEEK_END表示文件末尾,SEEK_CUR表示当前位置;返回-1表示出错了。
六:access函数
函数原型:
int access(const char *pathname, int mode);
返回0表示文件具有mode的权限,-1则没有响应的权限。
七 sync函数
函数原型:
int sync();
将系统缓冲区中数据写入到磁盘。