【APUE】4、Unix环境高级编程——解惑篇
来源:互联网 发布:linux 查看ftp用户 编辑:程序博客网 时间:2024/06/08 03:49
1、关于FILE_MODE值的问题
众所周知,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 jingjing 13315 2011-07-28 09:09 test;
注意:这里的权限不是-rwxrwxrwx,因为用户组和其他用户根本没有写的权限。
所以,以后在进程间通信(IPC)中用到FILE_MODE的地方就要记得,可不能把它设置为0777啦!
2、 宏: 整数常量O_ACCMODE
原文:
Macro: int O_ACCMODE
This macro stands for amask that can be bitwise-ANDed with the file status flag value to produce avalue representing the file access mode
The mode will be O_RDONLY, O_WRONLY, or O_RDWR.(In the GNU system it could also be zero, and it never includes the O_EXECbit.)
翻译:
这个宏作为一个掩码以与文件状态标识值做AND位运算,产生一个表示文件访问模式的值。
这模式将是O_RDONLY, O_WRONLY, 或 O_RDWR(在GNU系统中,也可能是零,并且从不包括 O_EXEC 位)
O_ACCMODE<0003>:读写文件操作时,用于取出flag的低2位
O_RDONLY<00>:只读打开
O_WRONLY<01>:只写打开
O_RDWR<02>:读写打开
http://blog.csdn.net/grasspower/article/details/2807672
- 【APUE】4、Unix环境高级编程——解惑篇
- Unix——学习《Unix环境高级编程》找不到“apue.h”方法
- 《UNIX环境高级编程》apue.h问题
- unix环境高级编程 apue.h文件
- 《UNIX环境高级编程》APUE源码使用方法
- 《unix 高级环境编程》中的apue问题
- <UNIX环境高级编程>中的 "apue.h"
- Unix环境高级编程apue.h
- UNIX环境高级编程--“apue.h”问题
- 《UNIX环境高级编程》中的apue.h
- UNIX环境高级编程(APUE) 总结
- apue.h解决 unix环境高级编程
- UNIX环境高级编程之apue.h
- 《Unix环境高级编程》准备apue.h
- 《UNIX高级环境编程》 -- apue.h
- UNIX环境高级编程的apue.h源码-APUE
- 《Unix环境高级编程》笔记之——Apue源码编译(Ubuntu 12.04)
- 《UNIX环境高级编程》 —— 公共头文件 apue.h
- 2015年11月小结
- java希尔排序算法
- Eclipse 屏蔽鼠标移动提示类信息
- 黑马程序员—Java基础—多线程
- 第十四周实践项目1—验证算法(4)平衡二叉树
- 【APUE】4、Unix环境高级编程——解惑篇
- java快速排序算法
- Android中Task任务栈的分配
- 汉诺塔II
- vector容器
- Android系统中GC什么情况下会出现内存泄露呢?
- acm心路1
- 归并排序的两种不同实现
- python题目:一个小小的猜名有戏