【问题标题】:c function that changes permission of file更改文件权限的c函数
【发布时间】:2020-06-10 10:52:24
【问题描述】:

所以我试图制作一个使用 chmod 更改文件权限的 c 函数 用户应该能够输入文件名以及权限(777),然后字符串看起来像这样“chmod 777 file.txt”。有没有一种方法可以做到这一点,而不必为每个权限都提供案例?

函数 RemoveChar 只是从字符串中删除“chmod”

void changeMod(char* ptrString)
{
    RemoveChar(ptrString, 6, 0);
    char *token = strtok(ptrString, " ");
    char *file = strtok(NULL, " ");
    mode_t owner, group, others;
    for(int i = 0; i < 3; i++)
    {
        for (int permission = 0; permission < 8; permission++)
        {
            if(token[i] == ((char)permission))
            {
                if(i == 0)
                {
                    owner = (permission * 100);
                }
                else if(i == 1)
                    group = (permission * 100);
                else
                {
                    others = (permission * 100);
                }
            }       
        }
    }
    chmod(file, owner|group|others);
}

这显然不起作用,但类似

【问题讨论】:

    标签: c permissions chmod


    【解决方案1】:

    您要查找的库函数是strtoul。注意base 参数,它可以用来指示它解析八进制数字。

    【讨论】:

    • 这是否可以与 chmod 一起使用,因为它要求这样的内容:chmod(file, S_IRWXUS_IRWXG|S_IRWXO)
    • @BeepBoop 是的,因为这些值 are defined by POSIX 并且不会因兼容的实现而异。例如,S_IRUSR 必须等于 0400 八进制数。
    猜你喜欢
    • 2013-06-27
    • 1970-01-01
    • 2012-04-27
    • 2020-08-12
    • 2016-01-20
    • 2012-02-16
    • 2018-06-18
    • 2010-09-18
    • 1970-01-01
    相关资源
    最近更新 更多