我正在开发一个涉及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函数,用于将文件的所有者与当前登录用户的所有者进行比较,并将文件组与登录用户的组进行比较。
感谢任何帮助,谢谢!
答案 0 :(得分:0)
stat结构中的st_uid和st_gid字段为您提供文件的所有者和组;将它们与当前登录用户的值进行比较。你得到那些使用getuid()和getgid()。