rho*_*bus 2 unix macos xcode cocoa
这两个代码段生成具有不同文件权限的文件.示例1创建了预期的默认文件权限,但示例2没有.对此有何解释?
操作系统:Mac OS X版本:10.6.4
Xcode版本:3.2.2,64位
// Example 1
FILE *fh1 = fopen("Test1.txt", "w+x");
if (fh1) {
fwrite("TEST1", 1, 5, fh1);
fclose(fh1);
}
Run Code Online (Sandbox Code Playgroud)
创建:-rw-r - r-- 1 me staff 5 29 Jul 00:41 Test1.txt
// Example 2
int fh2 = open("Test2.txt", O_EXCL | O_CREAT | O_WRONLY);
if (fh2 >= 0) {
write(fh2, "TEST2", 5);
close(fh2);
}
Run Code Online (Sandbox Code Playgroud)
创建:---------- 1我的员工5月29日00:41 Test2.txt
使用O_CREAT时需要open在模式中添加第三个参数.例如:
int fh2 = open("Test2.txt",
O_EXCL | O_CREAT | O_WRONLY,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
Run Code Online (Sandbox Code Playgroud)
这相当于0666.请注意,此模式随后被进程的umask屏蔽,这意味着您指定的权限通常会减少一些.典型的umask是0022,这将导致0666&〜0222 = 0644的模式,即-rw-r--r--.
从男人开放:
所述的oflag参数可以指示该文件将被创建,如果它不(通过指定存在
O_CREAT标志).在这种情况下,open需要第三个参数mode_t mode; 使用模式模式创建文件,如chmod(2)进程'umask value(请参阅参考资料umask(2))中所述并进行修改.
| 归档时间: |
|
| 查看次数: |
684 次 |
| 最近记录: |