linuxc不带缓存的文件操作

来源:互联网 发布:安卓端口映射软件 编辑:程序博客网 时间:2024/05/28 05:19

系统调用

指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组接口来获得操作系统内核提供的服务,例如用户可以用来创建进程等。

系统调用关系图:

从上图可以看出系统将程序的运行空间分为了内核空间和用户空间,通过API接口实现系统调用,目的是保护系统的内核。


不带缓存的文件I/O操作:

(1)creat函数

函数的作用:创建一个新文件

函数的原型:int  creat(const  char  *filename,mode_t  mode);

头文件:#include <sys/types.h>

                #include <sys/stat.h>

                #include <fcntl.h>

返回值:执行成功,返回新的文件描述符;执行出错,返回-1。

函数参数:

fliename:文件名或文件路径

mode:创建文件的模式:①S_IRUSR  可读

                                              ②S_IWUSR  可写

                                              ③S_IXUSR   可执行


(2)open函数

函数的作用:打开一个文件

函数的原型:①int  open(const  char  *pathname,int  flags);(所打开文件存在下使用)

                        ②int  open(const  char  *pathname,int  flags,mode_t  mode);(所打开文件不存在时创建并打开)

头文件:

                #include <sys/types.h>

                #include <sys/stat.h>

                #include <fcntl.h>

返回值:执行成功,返回新分配的文件描述符;执行出错,返回-1。

参数:

对于参数flags有以下几种:

① O_CREAT:若文件不存在,该参数可以创建该文件

② O_RDONLY:以只读方式打开文件

③ O_WRONLY:以只写方式打开文件

④ O_RDWR:以可读写方式打开文件

⑤ O_APPEND:以附加方式加到文件后面(保存原来有的内容)


(4)read函数

函数的作用:从打开的文件中读取数据

函数的原型:ssize_t  read(int  fd,void  *buf,size_t  count);

头文件:#include <unistd.h>

返回值:执行正常时,返回实际读取到的字节数;若读取文件结束或者无数据读取时,返回0;执行出错,返回-1。

参数:

fd:文件描述符

buf:文件读取到的数据存放的地址

count:要读取数据的大小


(5)write函数

函数的作用:向打开的文件中写入数据

函数的原型:ssize_t  write(int  fd,const  void   *buf,size_t  count);

头文件:#include <unistd.h>

返回值:执行成功,返回实际写入文件中的字节数,写入字节数又分三种情况:全写入、部分写入及0个写入;

                执行出错,返回-1。

参数:

fd:函数描述符

buf:写入文件的数据所在的首地址,这里可以是字符串或者是数组名或指针

count:写入数据的大小


(6)lseek函数

函数的作用:对文件进行定位

函数的原型:int  lseek(int  fd,offset_t  offset,int  whence);

头文件:#include <sys/types.h>

                #include <unistd.h>

返回值:执行成功,返回文件当前指针到文件头之间的字节数;

                执行出错,返回-1。

参数:

fd:文件描述符

offset:表示指针的微调量的大小,对指针的位置进行微调,取正值时将指针从当前位置向后移动offset个单位,取负值则向前移动

whence:指针的位置

① SEEK_SET:将文件指针放在文件首

② SEEK_CUR:将文件指针放在当前位置

③ SEEK_END:将文件指针放在文件末尾


获取文件的大小可以将文件指针放在文件末尾即可。

0 0
原创粉丝点击