2016-05-15 3 views
0

LinuxのC++でファイルのパーミッションを変更したいと思います。ユーザーは、この構文を使用してアクセス許可を入力する必要があります。「アクセス許可を入力してください:rwx-w-r--」を端末に入力してください。C++でLinuxのファイルのパーミッションを変更する方法

ありがとうございます。

+4

[chmodの(2) - Linuxのマニュアルページ](http://man7.org/linux/man-pages/man2/chmod.2.html)私は、構文RWXを使用することができますどのように – MikeCAT

+0

--- --- chmodで? –

+3

自分でそれを解析します。 – MikeCAT

答えて

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

int main() { 
    chmod("./myfile", S_IRWXU); // enables owner to rwx file 
} 

詳細については、man 2 chmodを参照してください。

質問が "rwx-w-r--"という形式の9文字の文字列を解析する方法である場合、パーミッションがintとしてビットとしてエンコードされていることを認識してください。ビットがオンの場合、そのアクセス権はオンになります。次のコードは文字列をビットに変換し、明示的に変換します。検証は行われません。これは概念実証です。

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

int parse(char* perms) { 
    int bits = 0; 
    for(int i=0; i<9; i++){ 
    if (perms[i] != '-') { 
     bits |= 1<<(8-i); 
    } 
    } 
    return bits; 
} 
int main() { 
    char perms[]="rwx-w-r--"; 
    int exmp = S_IRWXU | S_IWGRP | S_IROTH; 
    printf("%d %d\n", parse(perms), exmp); 
    // outputs 468 468 
} 
関連する問題