在 C 中修改文件的文件统计信息

Modify a file's file stats in C

我正在编写一个程序,通过将多个文件合并为一个文件来提高文件的可移植性(很像 winzip/7zip)。

我的问题是:有什么方法可以修改解压文件的文件统计信息以匹配打包前的文件统计信息吗? (不只是次数。)

主要可直接更改的统计信息是用户和组权限,您可以使用 chmod 系统调用更改(请参阅 man page). Actual owner and group can be set with chown (man page) - note that you can only change the owner, or change the group to one for whom the current user is not a member, if running as the superuser (i.e. root). The times can be set with utimes (man). Extended file attributes (used for access control lists etc) can be set using setxattr (man)。

其他文件属性——硬链接数、索引节点等——无法直接设置。

在任何情况下,您都需要在存档时读取文件的属性,将它们与文件内容和其他元数据一起序列化到您的存档中,并使用列出的系统调用在提取时恢复它们。