2016-07-24 10 views
3

私はmkdirシステムコールを使用するときに得た権限に問題があります。私はそれを正しく呼んでいるという事実を知っています、それはすべて8進数です。私はモード入力が私が数学で行うことができる整数であり、間違いなく小数点511であるところでそれをテストしました。私は、ディレクトリを作成し、パーミッションをチェックするとき、私はそれが完全に0777に設定することができます。mkdirユーティリティまたはchmodコマンドまたは何を使用する場合mkdirシステムコールは、0777の代わりに0755を作成します。

#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の代わりに

Access: (0755/drwxr-xr-x) 

0777.のです。これは動作していないシステムコールです。

私は0111

答えて

4

にモードを設定した場合、あなたのumaskが0022であるようにそれはまた、小さい権限のために正常に動作しますか?

はあなたのシェルから

$ umask 

でそれを確認してください。この場合

は、

$ umask 0 

でのumaskをゼロにし、それだったあなたのプログラム

+0

でもう一度お試しに設定します!ありがとう! – Reed

+0

@Reed - まったくありません。 – max66

関連する問題