我要疯了。我正在尝试编写一个可以存储和提取文件的存档库。存档文件如下所示:
<0,/home/user/file.txt,154,0755>
file contents (154 byte)
每个文件都由一个标头( <...> )标识,有四个“标签”(用逗号分隔)、文件类型(0 代表文件,1 代表目录)、路径、字节大小、权限(八进制)。我使用 stat 系统调用(我在 Linux 上)检索大小和权限。我的问题是我必须将八进制值从 st_mode 转换为字符串,将其存储在存档文件中(标题中的第四个标签),然后将其提取并与 chmod 系统调用一起使用。
要将其转换为字符串,我使用:
char mode[6];
sprintf (mode, "%o", statr.st_mode);
并检索它我使用 atoi,但它似乎不起作用。例如,存储在第 4 个标签中的值是 100644,但是 chmod 设置的权限错误(我的用户无法读取文件)。
我不确定我是否解释得很好,如果需要,我会发布整个代码(但它认为没有实现问题,只是从八进制转换为字符串之间的问题)
编辑:解决了!实际上 strtol 方法有效,但我也忘记将它应用于目录(因此,由于错误文件夹的权限掩码,提取包含文件的目录导致 Segfault)。谢谢大家的帮助!