C++ mkdir系统调用创建权限0755而不是0777

C++ mkdir系统调用创建权限0755而不是0777,c++,bash,c++11,unix,permissions,C++,Bash,C++11,Unix,Permissions,我在使用mkdir系统调用时获得的权限有问题。我知道我说的没错,是八进制的。我已经测试过了,模式输入是一个整数,我可以用它来做数学运算,它的小数点肯定是511 #include <sys/stat.h> #include <sys/types.h> #include <cstdlib> int main (int argc, char* argv[]) { if (mkdir(argv[argc-1], 0777) == -1) {

我在使用mkdir系统调用时获得的权限有问题。我知道我说的没错,是八进制的。我已经测试过了,模式输入是一个整数,我可以用它来做数学运算,它的小数点肯定是511

#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
当我使用mkdir实用程序或chmod或任何可以完美设置为0777的工具时。只是系统调用不起作用

它也适用于较小的权限,例如如果我将模式设置为0111。

您的umask是0022

核对一下

$ umask
从你的壳里

在这种情况下,将umask设置为零

$ umask 0

然后用你的程序再试一次

就是这样!谢谢@里德-一点也不。
$ umask 0