当前位置:  技术问答>linux和unix

关于stat结构的一个奇怪问题

    来源: 互联网  发布时间:2016-11-26

    本文导语:  我使用了如下程序片断: 代码: #include  #include  #include  #include  int main() { struct stat statbuf; if (!stat("./ttt", &statbuf)) { printf("%xn%dn", statbuf.st_dev, statbuf.st_ino); } return(0); }ttt是a.out相同目录下的一个文本文件。 ...

我使用了如下程序片断:

代码:
#include 
#include 
#include 
#include 

int main()
{
struct stat statbuf;

if (!stat("./ttt", &statbuf)) {
printf("%xn%dn", statbuf.st_dev, statbuf.st_ino);
}

return(0);
}ttt是a.out相同目录下的一个文本文件。
用stat获得其文件信息。
用printf打印st_dev和st_ino,发现我用这个程序始,st_ino始终被打印为0。
然后我使用了如下代码:

代码:
#include 
#include 
#include 
#include 

int main()
{
struct stat statbuf;

if (!stat("./ttt", &statbuf)) {
printf("%xn", statbuf.st_dev);
printf("%dn", statbuf.st_ino);
}

return(0);
}此时st_ino可以被正确输出。

为了测试,我又使用了如下代码:

代码:
#include 
#include 
#include 
#include 

int main()
{
struct stat statbuf;
int tmp;

if (!stat("./ttt", &statbuf)) {
tmp = statbuf.st_ino;
printf("%xn%dn", statbuf.st_dev, statbuf.st_ino);
printf("%dn", tmp);
}

return(0);
}此时tmp的值为真确的st_ino值,而第一个printf的st_ino仍然被输出为0。

请问这是什么原因呢?

|
把statbuf.st_ino放到前面打印就行,关键在于输出statbuf.st_dev之后就不对了

把代码做如下试验
#include 
#include 
#include 
#include 

int main()
{
struct stat statbuf;
int tmp = 0;

if (!stat("./ttt", &statbuf))
{
tmp = statbuf.st_ino;
printf("%llxn%dn", statbuf.st_dev, statbuf.st_ino);
printf("%dn%xn", tmp, statbuf.st_dev);
printf("%dn%xn", statbuf.st_ino, statbuf.st_dev);
}

return(0);
}

可以得出结论,因为statbuf.st_dev是longlong类型的,所以如果%d、%x之类输出之后,后面用%d得到的是longlong的后一个占据的内存,所以是0

    
 
 

您可能感兴趣的文章:

  • stat数据结构的问题
  • stat结构
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于stat()函数的问题
  • stat函数问题?
  • stat取得文件信息的问题
  • linux应用编程:stat函数 看文件权限的问题!!!!
  • stat出错问题?
  • 跪求各位大侠帮帮小弟吧 关于文件名与stat函数问题
  • 使用stat函数遇到的问题,请诸位高人指点
  • 如何解决mysqlimport: Error: 13, Can't get stat of 的问题
  • #include<sys/stat.h> 中的stat.h文件到底在哪个目录下面?
  • unix中形如<sys/stat.h>头文件
  • stat函数为什么老返回错?
  • 如何判断路径是否存在?stat?opendir?
  • 开源的统计应用程序 PHP Web Stat
  • 请问读/proc/stat的时候是否需要加锁,会不会读到错误数据?
  • 请问Stat函数的使用和工作原理
  • 请问大家关于STAT硬盘的驱动在linux下!
  • stat st_size获取文件大小单位?
  • 用stat的时候说storage size isn't know
  • 请问/proc/stat文件中第一行cpu 后面4个数字代表什么含义阿?
  • 请问/proc/stat文件是系统产生的吗?
  • linux mv cp 无法stat
  • STAT硬盘在LINUX下创建RAID5时,无法完成挂载?
  • c语言如何在创建一个文件的时候,其stat值为0200 ?
  • 请教stat函数时间转换
  • Oracle经验分享:GATHER_STATS_JOB 任务
  • 怎样在STAT硬盘上安装linux系统
  • stat()和fstat()
  • stat函数为什么有时不能正确获取文件实际大小


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3