我正在尝试chmod()从我的C程序调用该函数,但它没有设置正确的权限,除非mode_t参数中有前导零.例如,chmod(argv[2],00777)将工作,但chmod(argv[2],777)将设置权限以完成垃圾.
当我尝试使用atoi()时会出现一个大问题,因为它会丢弃任何前导零.即使用户在命令行中输入没有前导零的值,我有什么方法可以使下面的程序工作?
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
if (argc != 3)
exit(EXIT_FAILURE);
if (chmod(argv[2], (mode_t)atoi(argv[1])) != 0)
printf("Warning: Unable to change file permissions.");
return 0;
}
Run Code Online (Sandbox Code Playgroud)