我在C中乱搞FUSE,我想创建一个看起来在未来很远的文件。我在FUSE中编写的自定义stat()函数写入struct stat * stbuf,我想做类似的事情
stbuf->st_ctime = (1 << 39) - 1;
为创建日期创造一个荒谬的未来时间。
我在64位Linux系统上运行这个,所以我希望我的time_t是64位值,实际上,如果我只是printf(“%d \ n”,(int)sizeof(x) );为了测试我的程序中time_t的大小,我得到8.然而,当我编译我的代码并打开警告时,我得到了
warning: left shift count >= width of type [enabled by default]
以及我在已安装的文件系统中对文件进行统计的更改时间
1969-12-31 15:59:59.000000000 -0800
好像实际值是0.有谁知道为什么在64位系统应该有64位time_t时发生这种情况?
答案 0 :(得分:6)
在1 << 39
中,您正在转移int
而不是time_t
。