2016-07-24 46 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