我正在对我的文件描述符执行.navbar-inverse .navbar-nav>.open>a, .navbar-inverse .navbar-nav>.open>a:focus, .navbar-inverse .navbar-nav>.open>a:hover {
background-color: transparent;
}
并将其转储到fstat
。我阅读了struct stat
的文档(下面的链接),并声称有成员fstat
和st_atime
。
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/stat.h.html
GCC让我编译,但是通过GDB,我无法打印出那些成员(即我可以打印其他所有成员)。 GDB声称它们不存在。
事实上,当我打印出st_mtime
时,struct stat
拼写为st_atime
(即与st_atim
相同)。然后它看起来像是元组或其他东西,因为它包含两个值,st_mtime
和tv_sec
。
有谁知道为什么tv_nsec
声称他们不存在?
此外,是否有人知道如何将其传递给GDB
?我正在使用memcpy
。
这是它抱怨的代码行,说我不能在这里传递C90
。如何投射它以使这条线工作?
time_t
MY OS:CentOS
答案 0 :(得分:1)
在Linux上,st_atime
中的至少某些版本struct stat
和其他一些时间字段位于struct timespec
内,并包含具有完整纳秒精度的正确时间戳。在这些系统上st_atime
是对其他系统的定义。在我的CentOS机器上,它被定义为st_atim.tv_sec
。
将代码丢入预处理器以查看系统中的代码:
$ cat foo.c
#include <sys/stat.h>
void
foo(void)
{
struct stat st;
(void)st.st_atime;
}
$ cc -E foo.c | tail -7
void
foo(void)
{
struct stat st;
(void)st.st_atim.tv_sec;
}
Gdb不了解预处理器定义,因此无法知道代码是如何预处理的。它只知道结构的真正定义。