2016-07-24 11 views
3

Ich habe ein Problem mit den Berechtigungen, die ich erhalte, wenn ich den mkdir-Systemaufruf verwende. Ich weiß, dass ich es richtig nenne, es ist oktal, all das. Ich habe es getestet, wo die Moduseingabe eine Ganzzahl ist, mit der ich rechnen kann, und definitiv 511 in Dezimal ist.mkdir Systemaufruf erstellt Berechtigungen 0755 statt 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 

Aber wenn ich ein Verzeichnis und überprüfen Sie die Berechtigungen erstellen, ist es immer 0755 statt 0777.

Access: (0755/drwxr-xr-x) 

Wenn ich das mkdir Dienstprogramm oder chmod verwenden oder was auch immer es perfekt auf 0777 einstellen. Es ist nur der Systemanruf, der nicht funktioniert.

Es funktioniert auch gut für weniger Berechtigungen, wie wenn ich den Modus auf 0111 gesetzt

Antwort

4

Ihre umask ist 0022?

bestellen mit

$ umask 

von Shell.

In diesem Fall stellen Sie die umask mit

$ umask 0 

und versuchen Sie es erneut mit Ihrem Programm

+0

Das war alles auf Null! Vielen Dank! – Reed

+0

@Reed - überhaupt nicht. – max66