【问题标题】:How to change/show permissions in C如何在 C 中更改/显示权限
【发布时间】:2011-02-02 03:22:09
【问题描述】:

我是 C 编程新手,我想对 dir 和 subdir 的文件执行 chmod 命令。如何使用 C 代码更改/显示权限?有人可以举个例子吗?如果有人能给我提供代码,我将不胜感激。

【问题讨论】:

    标签: c linux chmod


    【解决方案1】:

    有一个 chmod 函数。来自man 3p chmod

    SYNOPSIS
       #include <sys/stat.h>
    
       int chmod(const char *path, mode_t mode);
    
    ...
    

    如果你想读取权限,你会使用 stat.来自man 3p stat

    SYNOPSIS
       #include <sys/stat.h>
    
       int stat(const char *restrict path, struct stat *restrict buf);
    
    ...
    

    如果你想像你提到的那样递归地做,你必须自己循环readdir的结果。

    【讨论】:

    • 感谢您的快速回答,但我可以在哪里找到有关它的完整代码吗?
    • 我找到了,但我只找到了一些碎片。
    • @user304414:您尝试过我链接的手册页版本吗?他们下面有真实的例子。
    • 是的,我做到了,但这些只是示例,不是完整的程序。我可以从正常运行的程序代码中学习。
    • @user304414:这些是调用这些函数的完整示例。如果您想要一个完整的程序,请将其包装在 main 中,声明必要的变量...
    【解决方案2】:

    使用 GNU C 库,您应该可以直接使用

    int chmod (const char *filename, mode_t mode)
    int chown (const char *filename, uid_t owner, gid_t group)
    

    查看here..所有这些功能都在sys/stat.h

    【讨论】:

      【解决方案3】:

      一个例子:(显示/测试权限)

      struct stat st; 
      int ret = stat(filename, &st);
      if(ret != 0) {
          return false;
      }   
      if((st.st_mode & S_IWOTH) == S_IWOTH) {
      
      } else {
      
      }
      

      【讨论】:

        猜你喜欢
        • 2015-11-02
        • 2020-02-07
        • 2015-04-22
        • 1970-01-01
        • 1970-01-01
        • 2014-04-18
        • 1970-01-01
        • 2010-12-09
        • 2011-10-28
        相关资源
        最近更新 更多