我正在做一個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,因此設備行不會出現在屏幕上。 –