• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2023-06-09 14:12 Aet 隐藏边栏 |   抢沙发  11 
文章评分 2 次,平均分 5.0

权限

  1. r 可读权限 4(8进制)
  2. w 可写权限 2(8进制)
  3. x 可执行权限 1(8进制)

创建文件夹

  1. 这里以777权限创建了一个文件夹
  2. 就是上面的读写可执行权限都有

文件相关

函数

mode

  1. “r” :以只读方式打开文件,该文件必须存在。
  2. “w” :打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
  3. “a” :以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
  4. “r+” :以可读写方式打开文件,该文件必须存在。
  5. “w+” :打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
  6. “a+”:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
  7. “rb” :只读打开一个二进制文件,只允许读数据。
  8. “wb” :只写打开或建立一个二进制文件,只允许写数据。
  9. “ab” :追加打开一个二进制文件,并在文件末尾写数据。
  10. “rb+” :读写打开一个二进制文件,允许读写数据,文件必须存在。
  11. “wb+” :读写打开或建立一个二进制文件,允许读和写。
  12. “ab+” :读写打开一个二进制文件,允许读,或在文件末追加数据。
  13. “rt” :只读打开一个文本文件,只允许读数据。
  14. “wt” :只写打开或建立一个文本文件,只允许写数据。
  15. “at” :追加打开一个文本文件,并在文件末尾写数据。
  16. “rt+” :读写打开一个文本文件,允许读和写。
  17. “wt+” :读写打开或建立一个文本文件,允许读写。
  18. “at+” :读写打开一个文本文件,允许读,或在文件末追加数据。

掩码问题

  1. umask是一个四位八进制,用以控制新创建的文件或目录的权限
  2. 默认的umask值这里显示的是0022

  1. 也就是说,我们用上面代码创建的文件夹的实际权限,其实是0755(对其他用户来讲,可读可执行但不可写)
  2. 需要额外注意的是,umask的值是特定于进程的,即一个进程的umask的值不会影响到另一个进程的umask值
  3. 所以,可以在修改完umask值后不用将其恢复

code

  1. 这里通过修改umask值创建了一个0777权限的文件夹

记录下为什么要创建一个这样的0777的文件夹

  1. 背景:
  2. 在Clion里面以root权限启动了测试程序,加载了一个动态库
  3. 这个动态库里面有一个地方会在某个特点文件夹没有的时候创建它,紧接着在文件夹里面创建文件
  4. 现象:
  5. 以root启动测试程序后,创建的文件夹属于系统,在没有更改umask之前,想创建的文件夹权限是0755
  6. 创建后,文件夹简介显示自定,没有写权限
  7. 于是以0766权限创建文件夹,创建后,发现显示可读
  8. 总结:
  9. 因为umask的作用,以0755的掩码创建的文件是没有写权限的,所以导致会在这个文件夹里新建文件失败

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2023-06-10
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享