如果您拥有C中的所有者,组或一般权限,请进行打印

时间:2017-03-14 07:22:12

标签: c unix permissions

我正在开发一个涉及Unix的项目,我们必须在C中进行编码。所以这个项目处理在C中分叉和执行多个文件。我遇到的问题是如何判断你是否拥有执行文件时的,组或一般权限。输出应如下所示。

File: .. 
Directory: /root 
You have general permissions: read execute

File: Lab3.c
Directory: /home/users15/sew25545
You have owner permissions: read write execute

我已完成文件和目录部分,所以不用担心。 现在,它说“你有一般权限:”的部分是我奋斗的地方。我发现看到你对所有者,组和用户的读,执行和写权限是这样完成的。

    fileMode = fileattrib.st_mode;
    /* Check owner permissions */
    if ((fileMode & S_IRUSR) && (fileMode & S_IREAD))
      printf("Has Owner Read Permission");
   etc...

所以我得到的所有权限都没有问题,但我怎么知道他们是否具有一般权限,组权限或所有者权限。我的老师说除st_mode之外还有一个不同的stat函数,用于将文件的所有者与当前登录用户的所有者进行比较,并将文件组与登录用户的组进行比较。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

stat结构中的st_uid和st_gid字段为您提供文件的所有者和组;将它们与当前登录用户的值进行比较。你得到那些使用getuid()和getgid()。