【发布时间】:2013-12-12 20:00:22
【问题描述】:
我正在编写一个在 UNIX 上运行的 c 程序,并尝试使用 chmod 命令。查阅手册页后,我知道 chmod 需要两个参数。第一个是权限位,第二个是要更改的文件。我想对文件的当前权限位和用户输入的位进行按位或运算,并将其提供给 chmod() 以更改文件的权限。
我找到了access() 函数,但无法弄清楚如何使用它来获取指定文件的权限位。
我现在拥有的是:
octalPermissionString = strtol(argv[1], (char**)NULL, 8);
if(chmod(argv[2], octalPermissionString | (access(argv[2], octalPermissionString)) < 0) {
fprintf(stderr, "Permissions of file %s were not changed.\n");
}
地点:
argv[1] 包含一个由用户输入的三位十进制数的字符串,将其转换为八进制,然后用作进行按位或运算的权限位,
argv[2] 是要修改权限的文件,也是用户指定的。
octalPermissionString 是一个 long,用于保存用户输入的八进制转换。
是否/是否有任何其他函数可以返回给定文件的权限位?
编辑:缺少右括号
【问题讨论】:
-
C 中没有任何东西可以做到这一点。它是特定于实现的。
-
stat() 的 st_mode 字段可能会有所帮助...
-
@Quirliom +1 谢谢,几分钟前我找到了 stat() 函数。现在试图弄清楚如何从 stat 结构中获取 st_mode 字段以传递给 chmod()
-
@trawww 看我的回答。
标签: c unix permissions strtol