关于FILE_MODE值的问题,!!!!!
2016-07-09 08:35
381 查看
众所周知,FILE_MODE是一个宏,它经常定义成如下形式;
#define FILE_MODE(S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
定义成这样的意思是:允许用户读、写;组成员只读和其他用户只读。这些权限位会被当前进程的文件模式创建掩码修正,也就是程序中用到FILE_MODE的地方,它的值会被替换为0644。
当然,这个值是可以用户自定义的。但是,经过试验我们发现,这个权限是有限制的。无论是在FIFO中还是在Posix消息队列中,FILE_MODE的值都不可能是0777。因为用户的权限可以是读、写、执行的;但是用户组和其它用户最高权限是可读可执行,不可写。因此,如果你将FILE_MODE自定义如下:
#define FILE_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRPS_IROTH|S_IWOTH|S_IXOTH);
或者#define FILE_MODE 0777;
假如生成的可执行文件名是test,当你通过ls -l test查看时,你只能得到如下结果:
-rwxr-xr-x 1 jingjing jingjing13315 2011-07-28 09:09 test;
注意:这里的权限不是-rwxrwxrwx,因为用户组和其他用户根本没有写的权限。
所以,以后在进程间通信(IPC)中用到FILE_MODE的地方就要记得,可不能把它设置为0777啦!
相关文章推荐
- 短信平台行业领域
- STDIN_FILENO与STDIN的区别
- linux编程里有这么一句if (lseek(STDIN_FILENO, 0, SEEK_CUR) == -1 ),请问是de意思?
- STDIN_FILENO的作用及与stdin 的区别
- UVA1423 猜序列 解题报告
- Linux ---lseek() 函数
- fcntl.h与unistd.h头文件
- 文件IO(1)--creat和open
- fcntl.h
- 文件锁fcntl()函数的使用
- fcntl.h头文件
- 韩顺平.循序渐进学.java.从入门到精通迅雷资源下载地址
- inux系统调用fcnt()l函数详解
- Android中取得手机屏幕的信息
- openat()函数的用法示例
- ALM损坏后的恢复步骤
- ioctl()
- fsync()
- linux进程间通信方法
- C语言中sync()