我正在做一个stat() - 调用,返回一个结构与我想要提取的信息。到目前为止,我成功地获得了我想要的内容,直到获得访问时间,修改和最后更改文件的时间。使用ctime分段错误
我想用ctime来获取它,然后用printf打印出来。
printf("File: %s",argv[1]);
printf("\nSize: %d",result.st_size);
printf(" Blocks: %d",result.st_blocks);
printf(" IO Block: %d",result.st_blksize);
printf("\nDevice: 0x%x",result.st_dev);
printf(" Inode: %d",result.st_ino);
printf(" Links: %d",result.st_nlink);
// printf("\nAccess: %s",ctime(result.st_atime));
此代码运作良好,并给出了下面的输出:
File: /etc/passwd
Size: 2250043 Blocks: 4416 IO Block: 4096
Device: 0x6804 Inode: 9738432 Links: 1
如果我去掉最后一行,我想要得到的访问时间,我得到这样的输出:
File: /etc/passwd
Size: 2250043 Blocks: 4416 IO Block: 4096
Segmentation fault
我该如何解决这个问题?另外,如何在之前得到分段错误的设备,Inode和链接打印出来?不应该打印它,然后产生分段错误?
我对C的零经验我在之前的课程中学习过Assembly,但很简单。我试图读取time.h的API,但我真的无法找到解决方案。
我非常感谢任何帮助或提示,我可以得到!
谢谢, ž
的printf通常行缓冲。直到它看到一个换行符(默认情况下)才会打印出来。换行符是最后一个失败的printf,因此设备行不会出现在屏幕上。 –