• 文件IO,open函数,O_CREAT的失误——默认权限,Linux文件的特殊权限T。


    0. 前言

            哎呀,说着加快更新频率的,结果。推荐一个电影吧《憨豆先生的大灾难》。


    1. open函数

            看下说明。

            有两种方式,区别就是带不带最后的参数mode,这个理解为权限的意思。

            那什么时候用哪个呢?今天我就遇到了这个问题。其实很简单的一件事情,如果你使用这个函数去创建本来不存在的文件,那么你最好是带上mode,如果你只是打开文件,简单的读写,与文件的存在与否没有关系的话,第一种是可以满足需求的。

            那么问题来了,如果我是想创建文件,但是我没有带mode,那么它创建的文件的权限默认是什么样的呢?

            看下我今天遇到的错误。先看下我写的简单示例源码。

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. const char filepath[]="路径/data.txt";
    9. int main(void)
    10. {
    11. int fd;
    12. fd = open(filepath,O_CREAT | O_RDWR | O_APPEND);
    13. int tag = write(fd,"123",3);
    14. close(fd);
    15. return 0;
    16. }

      当我编译的时候是没有报错的,运行可执行文件也没有报错

             但是当我使用cat指令时出现权限不够的问题。

             我就有点纳闷了,执行倒是可以执行,Linux的cat却不行。加上sudo是OK的。还有,当我多次执行可执行文件的时候,论说应该多次写操作,对吧。但是,却没有写成功。

             执行可以执行,写倒是没有写进去,why?

             我还发现一个问题,当我想要删掉时,会提示我。


            所以,这就出现了O_CREAT创建文件的默认权限的问题。看下权限。

             发现了什么,data.txt是T权限。T权限是什么鬼?

            网上搜了一大圈,没有我满意的,只知道是特殊权限。大佬可以评论指导一下。


            修改后,加上权限。

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. const char filepath[]="/home/lhx/lhx/LinuxC/data.txt";
    9. int main(void)
    10. {
    11. int fd;
    12. fd = open(filepath,O_CREAT | O_RDWR | O_APPEND,0777);
    13. int tag = write(fd,"123",3);
    14. close(fd);
    15. return 0;
    16. }

            解决。


    2. 总结

            这个问题没有得到解决,我后面会重新补上的。而且这篇文章好像有点跑题。dbq...

            总之,大家写程序的时候还是尽量要符合规定,不然对吧。哈哈哈。

  • 相关阅读:
    HTML+CSS+JavaScript仿京东购物网站制作 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
    文件内容操作
    【dgl学习】dgl.canonical_etypes函数解析
    【源码+文档+调试讲解】基于vue的线上点餐系统
    cuda 换源 ubuntu 就他了 速度很快
    最常见的几种Java面试题
    聚胶新材上市破发:下跌11% 募资10.5亿公司市值38亿
    REDIS00_SpringBoot整合redis、RedisTemplate使用、工具类的抽取
    Linux 日期、时区
    基于Intel MediaSDK的低延迟编码实现
  • 原文地址:https://blog.csdn.net/weixin_43920383/article/details/127541116