当前位置:首页 » 《资源分享》 » 正文

学习系统调用接口_李憨憨_的博客

25 人参与  2021年05月07日 17:43  分类 : 《资源分享》  评论

点击全文阅读


学习系统调用接口


文章目录

  • 学习系统调用接口
  • 一、学习系统调用接口
    • 1.open
    • 2.write
    • 3.read
    • 4.lseek
    • 5.close
  • 二、代码实现
    • 1.代开文件
    • 2.写入数据
    • 3.读取数据
    • 4.代码实现


一、学习系统调用接口

1.open

在这里插入图片描述


pathname:文件路径名;             flags:标志位;
必选其一:O_RDONLY, O_WRONLY,O_RDWR
在这里插入图片描述


可选项:O_CREAT:如果文件不存在则创建;
      O_EXCL:跟O_CREAT一起使用,如果文件已经存在则报错返回;
      O_TRUNC:打开文件时截断文件长度为0–清空内容;
      O_APPEND:将写入设置为追加写;
w+:O_RDWR | O_CREAT | O_TRUNC; a+:O_RDWR | O_APPEND | O_CREAT
mode:文件的权限设置,0777–如果使用了O_CREAT就一定要指定mode;
返回值:成功返回非负整数–操作句柄-文件描述符; 失败返回-1;

2.write

在这里插入图片描述


fd:open返回的操作句柄,用于明确操作的是哪个文件;
buf:要写入文件的数据;   count:要写入文件的数据长度;
返回值:成功返回实际写入文件的数据长度;失败返回-1;

3.read

在这里插入图片描述

fd:open返回的操作句柄,用于明确操作的是哪个文件;
buf:存放读取到的数据的缓冲区;
count:要读取的数据长度;
返回值:成功返回实际读取到的数据长度;失败返回-1;

4.lseek

在这里插入图片描述


fd:open返回的操作句柄;      offset:偏移量;
whence:相对起始偏移位置-SEEK_SET/SEEK_CUR/SEEK_END
返回值:跳转后的位置相对于文件起始位置的偏移量;失败返回-1;

5.close

在这里插入图片描述

二、代码实现

1.代开文件

代码如下(示例):

  #include<stdio.h>
  #include<unistd.h>
  #include<stdlib.h>
  #include<string.h>
  #include<fcntl.h>
  int main()
  {
      //int open(文件名,选项标志,权限)
      int fd = open("test.txt", O_RDWR|O_CREAT, 0777);
      if(fd < 0){
          perror("open error");
          return -1;
      }
      close (fd);
      return 0;
  }

在这里插入图片描述

在这里插入图片描述

此时修改权限有两种方法:
1.修改权限掩码,但是此时并不建议直接修改权限掩码,因为修改之后是会一直生效的是对整个系统产生效果的。
2.通过系统调用函数来修改权限

在这里插入图片描述
在这里插入图片描述

2.写入数据

代码如下(示例):

      char *ptr = "昏昏欲睡\n";
      //write(句柄,数据,长度)
      int ret = write(fd, ptr, strlen(ptr));
      if(ret < 0){
          perror("write error");
          return -1;
      }

数据写入成功
在这里插入图片描述
追加写
在这里插入图片描述

在这里插入图片描述

3.读取数据

      char buf[1024] = {0};
      ret = read(fd, buf, 1023);
      if(ret < 0){
          perror("read error");
          return -1;
      }
      printf("%d----%s\n", ret, buf);

在这里插入图片描述

4.代码实现

   #include<stdio.h>
   #include<unistd.h>
   #include<stdlib.h>
   #include<string.h>
   #include<fcntl.h>
   #include<sys/stat.h>
   int main()
   {
       umask(0);//将当前进程的文件权限掩码设置为0
      //int open(文件名,选项标志,权限)
      int fd = open("test.txt", O_RDWR|O_CREAT|O_APPEND, 0777);
      if(fd < 0){
          perror("open error");
          return -1;
      }
      char *ptr = "昏昏欲睡\n";
      //write(句柄,数据,长度)
      int ret = write(fd, ptr, strlen(ptr));
      if(ret < 0){
          perror("write error");
          return -1;
      }
      //lseek(句柄,偏移量,相对位置)
      lseek(fd, 0, SEEK_SET);
      char buf[1024] = {0};
      ret = read(fd, buf, 1023);
      if(ret < 0){
          perror("read error");
          return -1;
      }
      printf("%d----%s\n", ret, buf);
      close (fd);
      return 0;
  }


点击全文阅读


本文链接:http://zhangshiyu.com/post/18562.html

文件  句柄  数据  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 真千金伪装大学生在自家公司实习让狗爬后一口气看完_宋氏小林小姑娘高分神作_小说后续在线阅读_无删减免费完结_
  • 萧逸尘,楚璃,叶紫嫣爱恨决绝,此生不见番外(爱恨决绝,此生不见)TXT+后续+结局在线阅读
  • 假千金要交换人生?我抱着空间做首富爽文_苏木青赵景城虐心反转_小说后续在线阅读_无删减免费完结_
  • 温时雨谢远之续集(清风难渡无缘人)全本完整免费版_起点章节+后续(温时雨谢远之)
  • 订婚两个月后,未婚夫要摆脱包办婚姻精心打造_肖明宝宝宾客故事会_小说后续在线阅读_无删减免费完结_
  • 霍景琛,苏晚,林深昔年请深如海,终不敌薄凉附加(霍景琛,苏晚,林深)(昔年请深如海,终不敌薄凉)全本浏览阅读连载中
  • 新章速递汤安甯,白子奕,汤贝贝是什么小说(结婚十年,回归家庭的老婆在外有二胎了)完本阅读无广告(结婚十年,回归家庭的老婆在外有二胎了)
  • 娇牛马导师偷我论文99篇成功升博导,我让他牢底坐穿精校文本_周老师师姐师兄爽文_小说后续在线阅读_无删减免费完结_
  • 独家顾宇,罗薇:结局+番外精编之作(资助生装阔气,我可不参加)电子书畅享阅读
  • 宗门全员重生,小师妹摆烂不干了(君拂君芙蓉)_宗门全员重生,小师妹摆烂不干了
  • 成了高考状元后,我倒欠两百万完结txt_阿姨叶青江安TOP10_小说后续在线阅读_无删减免费完结_
  • 嫁绝嗣长官,好孕作精在七零躺赢小说(顾嘉宁)序章+全章阅读(嫁绝嗣长官,好孕作精在七零躺赢)最新章节

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1