当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : open 函数中的mode
帖子发表于 : 2009-05-23 16:37 

注册: 2009-03-12 16:29
帖子: 49
送出感谢: 1
接收感谢: 0 次
int open(const char *path, int oflags, mode_t mode)
当oflags选择O_CREAT的时候,用到么mode 我看到的我的书上的mode用数字表示是5位,从左算起,第一位是设置用户的ID,第二位是设置组ID,后面三位分别表示:用户自己权限,组的权限,其他人的权限,
但是看到有的程序mode只有三位数字或者四位数字,这怎么理解呢,是不是只有三位的只表示出了用户自己权限,组的权限,其他人的权限,而用户的ID和组ID默认不写就是不设置呢?四位的又是省略了那个ID不设置的呢还是怎么回事呢?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: open 函数中的mode
帖子发表于 : 2009-05-23 17:26 
头像

注册: 2008-09-18 13:11
帖子: 2342
送出感谢: 1
接收感谢: 332
准确的说mode是一个用来表示权限的整数。用八进制表示的时候可以写成AXYZ这种形式。在C语言里面八进制数前面要加0,就成了0AXYZ。
A是特殊权限,X是所属用户权限,Y是所属组权限,Z是其他用户权限。
每一类权限又可以细分为读(4)、写(2)、和执行(1)。
A的读/写权限实际上是在执行时将进程的用户/组ID设置为文件的用户/组ID。A的执行权限实际上是限制删除或附加标志。
如果只写成0XYZ,就表示A的值为0,也就是不设置任何特殊权限。

不过不建议使用数字常量,使用S_IRUSR之类的常量比较好。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: open 函数中的mode
帖子发表于 : 2009-05-23 19:22 

注册: 2009-03-12 16:29
帖子: 49
送出感谢: 1
接收感谢: 0 次
谢谢了


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译