c - 如何仅使用 open 和 read 系统调用来读取文件权限位?
问题描述
我可以使用系统调用检查文件的权限位stat()
,该调用返回一个结构,其中包含一个字段,该字段又包含文件类型和模式。open
有没有办法只使用和read
系统调用来做同样的事情?即通过分析每一位?例如下面的代码读取一个文件(前四个字节)并确定它是否是一个 ELF 文件。
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int fd = open("main", O_RDONLY);
char *buf = malloc(sizeof (char) * 4);
read (fd, buf, 4);
if (strcmp(buf, "ELF"))
printf("It is an ELF file.\n");
free(buf);
return 0;
}
是否有类似的方法来读取文件以逐位提取信息?
解决方案
文件权限不是文件内容的一部分,而是其目录条目的一部分,因此您无法使用open
或读取read
文件的权限。
使用stat
是执行此操作的正确方法。
推荐阅读
- c++ - 如何使用 Gmock 模拟没有 operator== 的函数参数
- crystal-reports - 如何在VB6上更改水晶报表中的字段数据
- java - 如何防止我的多对多关系出现无限递归或 JSON 写入失败?
- r - 如何比较子组内的值?
- javascript - ESlint - 通过特定文本限制 console.logs
- powershell - 如何导出集群计划任务
- reactjs - 带有 X、Y 轴的 ReactJs 树形图
- sql - Sql 按更改日期分组
- json - 使用 TJSONDataObject 读取嵌套对象内 JSON 字符串值的正确语法
- arrays - Excel Anylogic 中的数组