在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();

将系统缓冲区中数据写入到磁盘。