文件I/O---函数使用方法

文件I/O 函数使用方法

文件I/O

1、文件描述符

对于内核而言,所有打开文件都由文件描述符引用;
文件描述符是一个顺序分配非负整数,当打开一个现存文件或创建一个新文件时,内核向进程返回一个最小的文件描述符;
当读、写一个文件时,用open或creat返回的文件描述符标识该文件,将其作为参数传送给read或write
文件描述符0,1,2是由shell默认打开的,分别为标准输入(stdin)、标准输出(stdout)和标准出错(stderr);
我们可以通过文件描述符对文件进行相关操作;

2、常用的文件I/O相关的操作函数

   #include <sys/types.h>
   #include <sys/stat.h>
   #include <fcntl.h>

(1)-----------open()---------------
函数原型:	int open( char *pathname , int flags, mode_t mode);
函数功能:	打开或者新建一个文件
参数:		pathname -- 被打开的文件名(可包含路径)
			flags -- 	O_RDONLY:	只读方式打开文件		
						O_WRONLY:	只写方式打开文件
						O_RDWR:		读写的方式打开文件 // 前三个参数必须选择一个进行填写
						O_CREAT:	如果该文件不存在,就创建一个新的文件,并用第三个参数为其设置权限 //权限一般写0664
						O_EXCL:		如果使用O_CREAT时文件存在,则可返回错误消息。这一参数可测试文件是否存在
						//O_NOCTTY:	使用本参数时,如文件为终端,那么终端不可以作为调用open()系统调用的那个进程的控制终端
						O_TRUNC:	如文件已经存在,  那么打开文件时先删除文件中原有数据
						O_APPEND:	以添加方式打开文件,所以对文件的写操作都在文件的末尾进行
			mode --		被打开文件的存取权限
					 0标识这个数是8进制 
					 三个8进制数 1、文件拥有者读写权限 2、拥有着同组用户读写权限 3、其他用户读写权限
返回值:	调用成功返回文件描述符,失败返回-1并设置errno;// perror("open");
			
(2)-----------close()---------------
函数原型:	int close(int fildes);
函数功能:	关闭一个打开的文件
参数:		fildes -- 要关闭文件的文件描述符
返回值:	调用成功返回0,出错返回-1,并设置errno;
当一个进程终止时,该进程打开的所有文件都由内核自动关闭;
关闭一个文件的同时,也释放该进程加在该文件上的所有记录锁;

(3)-----------read()---------------
函数原型:	ssize_t read(int fd, void *buf, size_t count);
函数功能:	从一个已经打开的可读文件中读取数据
参数:		fd    -- 	文件描述符
			buf   -- 	指定的缓冲区,指向一段内存单元
			count --	请求读取的字节数	
返回值:	read调用成功返回读取的字节数,如果返回0,表示到达文件末尾,返回-1.表示出错,通过errno设置错误码;
读操作从文件的当前位移量处开始,在成功返回之前,该位移量增加实际读取的字节数;

,
(4)-----------write()---------------
函数原型:	ssize_t write(int fd, const void *buf, size_t count);
函数功能:	向一个已经打开的可写文件中写入数据
参数:		fd    -- 	文件描述符
			buf   -- 	指定的缓冲区,指向一段内存单元
			count --	请求写入的字节数	
返回值:	write调用成功返回写入的字节数,返回-1.表示出错,通过errno设置错误码;
write()的返回值通常与count不同,因此需要循环将全部待写的数据全部写入文件;

(5)-----------lseek()---------------
函数原型:	off_t lseek(int fd, off_t offset, int whence);
函数功能:	定位一个已经打开的文件;
参数:		fd    -- 	文件描述符
			offset --	偏移量,每一读写操作所需要移动的距离, 单位是字节的数量,可正可负(向前移,向后移)
			whence(当前位置基点) -- SEEK_SET:当前位置为文件的开头,新的位置为偏移量的大小。
									  SEEK_CUR:当前位置为文件指针的位置, 新位置为当前位置加上偏移量。
									  SEEK_END:当前位置为文件的结尾,新位置为文件的大小加上偏移量的大小。

返回值:调用成功时,返回当前相对与文件开头的偏移量,以字节为单位
		调用失败时返回-1,并修改errno的值;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值