我使用ar.h来定义结构。我想知道如何获取有关文件的信息并将其放入结构中的指定变量中。
struct ar_hdr {
char ar_name[16]; /* name of this member */
char ar_date[12]; /* file mtime */
char ar_uid[6]; /* owner uid; printed as decimal */
char ar_gid[6]; /* owner gid; printed as decimal */
char ar_mode[8]; /* file mode, printed as octal */
char ar_size[10]; /* file size, printed as decimal */
char ar_fmag[2]; /* should contain ARFMAG */
};
使用上面定义的结构,我如何从ls -la
-rw-rw----. 1 clean-unix upg40883 368 Oct 29 15:17 testar
答案 0 :(得分:8)
您正在寻找stat(2,3p)
。
答案 1 :(得分:1)
为了模仿ls -la
的行为,您需要readdir
和stat
的组合。执行man 3 readdir
和man 2 stat
以获取有关如何使用它们的信息。
捕获ls -la
的输出是可能的,但不是一个好主意。人们可能期望shell脚本,但不是C或C ++程序。如果你能提供帮助,那么在Python或perl中做错也就是错误。
您必须自己从可用的数据构建您的结构。 strftime
可用于以您喜欢的方式格式化时间。
答案 2 :(得分:0)
为了将有关单个文件的数据收集到存档标题条目中,主要答案是stat()
;在其他情境中(例如ls -la
),您可能还需要使用lstat()
和readlink()
。 (注意:readlink()
不会终止其返回字符串!)
使用ls -la
,您可能会使用opendir()
系列函数(readdir()
和closedir()
)来读取目录的内容。