IO进程--文件IO

1.概念

是系统调用中的一组输入输出的函数接口

2. 特点:

1)没有缓冲机制,每次操作都会引起系统调用

2)围绕文件描述符进行操作,文件描述符是非负整数,从0开始依次增加。

3)文件IO默认打开了三个文件描述符,0(标准输入)、1(标准输出)、2(标准出错)

4)可以操作任意类型的文件,b c s p - l

3.函数接口:

1.打开文件

int open(const char *pathname, int flags);
功能:打开文件
参数:pathname:文件路径名
	  flags:打开文件的方式
			O_RDONLY:只读
			O_WRONLY:只写
			O_RDWR:可读可写
			O_CREAT:文件不存在创建
			O_TRUNC:清空文件内容
			O_APPEND:追加
返回值:成功:文件描述符
	   失败:-1

2.关闭文件

int close(int fd);

3.读写文件

#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
功能:从一个已打开的可读文件中读取数据
参数:fd  文件描述符
     buf  存放位置
     count  期望的个数
返回值:成功:实际读到的个数
      返回-1:表示出错,并设置errno号
      返回0:表示读到文件结尾	

ssize_t write(int fd, const void *buf, size_t count);
功能:向指定文件描述符中,写入 count个字节的数据。
参数:fd   文件描述符
     buf   要写的内容
     count  期望值
返回值:成功:实际写入数据的个数
       -1:失败  

4.文件定位操作

off_t lseek(int fd, off_t offset, int whence);
功能:设定文件的偏移位置	
参数:fd:文件描述符
	offset偏移量  				
		正数:向文件结尾位置移动
		负数:向文件开始位置
	whence  相对位置
		SEEK_SET   开始位置
		SEEK_CUR   当前位置
		SEEK_END   结尾位置
返回值:成功:文件的当前位置
	   失败:-1

5.获取文件属性

int stat(const char *path, struct stat *buf);
功能:获取文件属性
参数:path:文件路径名
	  buf:保存文件属性信息的结构体
返回值:成功:0
	   失败:-1

struct stat {
        ino_t     st_ino;     /* inode number */
        mode_t    st_mode;    /* protection */
        nlink_t   st_nlink;   /* number of hard links */
        uid_t     st_uid;     /* user ID of owner */
        gid_t     st_gid;     /* group ID of owner */
        off_t     st_size;    /* total size, in bytes */
        time_t    st_atime;   /* time of last access */
        time_t    st_mtime;   /* time of last modification */
        time_t    st_ctime;  /* time of last status change */
    };

6.标准IO和文件IO区别

标准IO

文件IO

定义

C库提供的输入输出的函数

系统调用中的一组输入输出的函数

缓存区

操作方式

stdin、stdout、stderr

文件描述符

0、1、2

可操作文件

普通文件

任意类型的文件

函数接口

打开文件

关闭文件

读写文件

文件定位操作

  1. fopen\freopen
  2. fclose
  3. fgetc/fputc、fgets/fputs、fread/fwrite
  4. fseek\rewind\ftell
  1. open
  2. close
  3. read/write
  4. lseek
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值