我想在Linux中使用C ++更改文件的权限。用户必须使用以下语法输入权限:"请输入权限:rwx-w-r - "在终端。
感谢您的帮助。
答案 0 :(得分:5)
#include <sys/types.h>
#include <sys/stat.h>
int main() {
chmod("./myfile", S_IRWXU); // enables owner to rwx file
}
有关详细信息,请参阅man 2 chmod
。
如果问题是如何解析形式为&#34; rwx-w-r - &#34;的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
}