0. 前言

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


1. open函数

看下说明。

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

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

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

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

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<string.h>
#include <sys/stat.h>
#include <sys/types.h>const char filepath[]="路径/data.txt";int main(void)
{int fd;fd = open(filepath,O_CREAT | O_RDWR | O_APPEND);int tag = write(fd,"123",3);close(fd);return 0; }

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

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

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

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

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


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

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

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


修改后,加上权限。

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<string.h>
#include <sys/stat.h>
#include <sys/types.h>const char filepath[]="/home/lhx/lhx/LinuxC/data.txt";int main(void)
{int fd;fd = open(filepath,O_CREAT | O_RDWR | O_APPEND,0777);int tag = write(fd,"123",3);close(fd);return 0; }

解决。


2. 总结

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

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

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

  1. linux查看文件的有效权限,linux文件权限查看及修改-chmod ------入门的一些常识

    查看Linux文件的权限:ls -l 文件名称 查看linux文件夹的权限:ls -ld 文件夹名称(所在目录) 修改文件及文件夹权限: sudo chmod -(代表类型)×××(所有者)×××(组 ...

  2. linux文件系统中文件基本权限,Linux文件权限基本属性图文详解

    [概述] 在 Linux 系统中,不同的用户处于不同的地位,拥有不同的权限,为保护系统安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. Linux 系统的每一个文 ...

  3. Linux文件继承目录权限,linux 文件权限继承

    低权限用户生成一个新文件到权限可写的目录,由于新文件不继承可写权限,生成后该用户则无法修改操作该文件. 用setfacl命令可以将新建的文件自动继承父文件夹的权限(-d参数继承) setfacl -R ...

  4. oracle 控制文件在哪里设置_更改Oracle默认的控制文件设置

    环境:Windows XP SP2 32位 Oracle 9.2.0.1 32位 创建数据库后,Oracle默认的3个控制文件都在c:/oracle/oradata/SID/下,3个鸡蛋都在一个篮子里 ...

  5. linux 文件隐藏权限,linux文件基本权限、默认权限、隐藏权限和ACL权限

    基本权限 文件属性rwx 每个文件当用ls -l查看时,都会显示文件的详细属性信息,其中在排在首位的共有10位字符信息 例如 -rw-r–rw-. 1 root root --.. 共有10位,第一位 ...

  6. 织梦php模板在哪个文件夹,织梦模板如何修改默认templets模板文件夹名称的方法...

    这篇文章主要为大家详细介绍了织梦模板如何修改默认templets模板文件夹名称的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 织梦系统的保存模板的默认目录 ...

  7. 不是Linux文件系统的权限,Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)...

    文件系统的权限管理(DAC体系:自主访问控制体系): 普通权限 特殊权限 文件的扩展属性 FACL(文件系统访问控制列表) 安全上下文: 任何在计算机中执行的任务都是由进程来实现的,所以进程就有必要访 ...

  8. linux查看目录访问权限,Linux文件访问权限

    一.设置用户ID和设置组ID 1.实际用户ID和实际组ID标识当前登录的用户. 2.有效用户ID,有效组ID以及附加组ID决定了我们的文件访问权限. 3.通常,有效用户ID等于实际用户ID,有效组ID ...

  9. linux中普通用户用友所有权限,linux文件的特殊权限

    1.SetUID的功能 只有可以执行的二进制程序才能设定SUID权限, 命令执行者必须丢该程序拥有x执行权限, 命令执行者在执行该程序时获得该程序文件属主的身份(在执行过程中灵魂附体为文件的属主), ...

最新文章

  1. bioskey的用法
  2. 重载,重写及数组练习
  3. CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板
  4. Win32 串口编程(一)
  5. stream iterators源代码详解
  6. npm包管理器小节一下
  7. 用友NC删除会计科目的前后台操作
  8. 静觅爬虫学习笔记8-爬取猫眼电影
  9. 怎么把两个PDF合并成一个?建议收藏这些合并的方法
  10. 十大超级老牌黑客逐个曝光
  11. scp 传目录_scp拷贝文件及文件夹
  12. 又来了!10分钟实现微信 “炸屎“大作战
  13. 吃球球C++ 配合easyX
  14. 编译搭建ngrok服务实现内网穿透
  15. java加载资源文件的3种方式
  16. docker:打包正在运行的容器,快速拖环境跑路
  17. android开发过程中一些遇到的问题
  18. 1.开胃菜(基础篇)
  19. android开发大全,Android应用案例开发大全
  20. Android的IPTV机顶盒是你在家庭多媒体设备

热门文章

  1. Java-可重入锁(ReentrantLock)
  2. 自定义函数判断闰年(C代码)
  3. ORA-01460: 转换请求无法实施或不合理
  4. 【分享】这些年,我使用的一些工具[非开发类]
  5. 男人无所谓忠诚,忠诚是因为背叛的筹码太低;女人无所谓正派,正派是因为受到的引诱不够...
  6. linux shell程序中的sed s/$//;s/ *//g;/^$/d各自代表的含义
  7. 前端开发icon高清图标搜索、下载网站
  8. xBox one 手柄RB 键 接触不良/反应不灵 抢救方法(软件)
  9. iCloud及CloudKit Dashboard运用
  10. 肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评