2016-07-24 161 views
3

我使用mkdir系统调用时遇到的权限问题。我知道一个事实,我叫它是正确的,它是八进制的,所有这一切。我已经测试了模式输入是一个整数,我可以用数学来计算,绝对是511的十进制数。mkdir系统调用创建权限0755而不是0777

#include <sys/stat.h> 
#include <sys/types.h> 
#include <cstdlib> 

int main (int argc, char* argv[]) { 
    if (mkdir(argv[argc-1], 0777) == -1) { 
     perror(argv[0]); 
     return EXIT_FAILURE; 
    } // if   
    return EXIT_SUCCESS; 
} // main 

但是,当我创建一个目录,并检查权限,它总是代替0755 0777

Access: (0755/drwxr-xr-x) 

当我使用mkdir实用程序或chmod等等一些命令也可以设定为0777完美。这只是系统调用不起作用。

它也工作得很好较小权限,就像如果我将模式设置为0111

回答

4

你的umask是0022?

$ umask 

从shell检查它。

在这种情况下,设置与

$ umask 0 

到零的umask,并与你的程序

+0

这是它重试!谢谢! – Reed

+0

@Reed - 完全没有。 – max66