(003)linux基础函数


C库IO函数

1、常见的C库IO函数有:

fopen、fclose、fread、fwrite、fgets、fputs、fscanf、fprintf、fseek、fgetc、fputc、flush等。

2、原理
在这里插入图片描述
其中,与linux系统函数不同的是:

  • linux系统函数没有这个缓冲区,它的缓冲区是由用户提供的。

系统IO函数

1、read 函数

  • 调用时把文件fd中的数据读取到count大小的缓冲区buffer中,返回实际读取到的字节数ssize_t
  • 返回0代表文件读完了;返回-1代表读文件失败,设置errno

2、write 函数

  • 调用时把count大小的缓冲区buffer中的数据写到文件fd中,返回实际写入的字节数ssize_t

文件相关函数

1、open 函数

  • int fd = open("File.txt", O_RDWR);,打开文件(读写权限)
  • int fd = open("newFile.txt", O_RDWR | O_CREAT, 0777);,创建新文件
  • O_EXCLO_CREAT一起使用,可以判断文件是否存在,文件存在,则返回-1
  • O_TRUNC,将文件截断为0

其中,O_CREAT给定的权限 和 本地的掩码($umask 查看)取反 作 与运算 得到的才是文件的实际权限

  • $ umask 掩码值,修改掩码
  • 配合返回错误码errno的代码通常为:

if (fd == -1) { perror(“open file”); exit(1); }

2、lseek 函数

  • int ret = lseek(fd, 0, SEEK_END); ,获取文件的长度
  • int ret = lseek(fd, 2000, SEEK_END); ,从end进行文件拓展,需要额外写点东西进去(空洞)才能完成拓展
  • 设置文件的位置指针

3、stat/fstat 函数

  • int ret = stat("path", &st);,其中这里的st是结构体stat。获取文件信息(大小、硬链接数、文件类型、inode等)

4、access 函数

  • 测试指定文件是否拥有某种权限(R_OK、W_OK、X_OK、F_OK)

5、truncate 函数

  • 文件拓展相应的长度(不用额外的写操作)

6、unlink 函数

  • 创建临时文件,在不使用时自动删除(open --> unlink --> write–>close)

7、dup和dup2 函数

  • dup2 关掉 后一个参数指定的文件,把前一个参数覆盖到后一个文件。此时两个fd都与第一个参数指定的文件相关联

8、fcntl 函数

  • 改变已经打开的文件的属性(获取F_GETFL或设置F_SETFL

int flag = fcntl(fd, F_GETFL, 0);
flag |= O_APPEND;
fcntl(fd, F_SETFL, flag);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值