我使用linux制作一个简单的Web服务器。我想知道我应该使用哪些函数来获取文件的可读性。
答案 0 :(得分:0)
您可以尝试这样:
su username -c 'ls /long/dir/user/yourfilename'
或
su username -s /bin/sh -c 'ls /long/dir/user/yourfilename'
答案 1 :(得分:0)
SELECT * FROM
(
SELECT user_name,
COUNT(*) as count1
FROM purchase
GROUP BY user_name ) xx
WHERE count1 IN (100, 50, 10)
ORDER BY count1 DESC
在上面的示例中,其他人对当前目录中的文件test.txt具有读取权限。
使用以下宏检查用户及其他人和组的权限。
S_IRWXU - 对所有者的读取,写入和执行权限
S_IRUSR - 所有者具有读取权限
S_IWUSR - 所有者具有写入权限
S_IXUSR - 所有者具有执行权限
S_IRWXG - 组
的读,写和执行权限S_IRGRP - 群组已获得读取权限
S_IWGRP - 组具有写入权限
S_IXGRP - 组具有执行权限
S_IRWXO - 读取,写入和执行其他人的权限
S_IROTH - 其他人已阅读许可
S_IWOTH - 其他人有写入权限
S_IXOTH - 其他人拥有执行权限
使用上述宏根据您在示例中的if条件中所需的内容修改代码(if(buf.st_mode& S_IROTH))。
答案 2 :(得分:0)
如果要使用文件描述符而不是路径,则应使用 stat 函数或 fstat 。
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
int main()
{
char *f = "test.ts";
struct stat *buff = malloc(sizeof(struct stat));
if (stat(f,buff) < 0)
return 1;
printf("Information for %s\n",f);
printf("File Permissions: \t");
printf( (S_ISDIR(buff->st_mode)) ? "d" : "-");
printf( (buff->st_mode & S_IRUSR) ? "r" : "-");
printf( (buff->st_mode & S_IWUSR) ? "w" : "-");
printf( (buff->st_mode & S_IXUSR) ? "x" : "-");
printf( (buff->st_mode & S_IRGRP) ? "r" : "-");
printf( (buff->st_mode & S_IWGRP) ? "w" : "-");
printf( (buff->st_mode & S_IXGRP) ? "x" : "-");
printf( (buff->st_mode & S_IROTH) ? "r" : "-");
printf( (buff->st_mode & S_IWOTH) ? "w" : "-");
printf( (buff->st_mode & S_IXOTH) ? "x\n" : "-\n");
return 0;
}