抽出したい情報を含む構造体を返すstat()呼び出しを行っています。これまでのところ、ファイルへのアクセス、変更、および最後の変更の時刻を取得するまで、必要なものを取得することに成功しています。
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
どうすればこれを修正できますか?また、デバイス、iノード、およびリンクが印刷される前に、セグメンテーション違反が発生するのはなぜですか?印刷してからセグメンテーション違反を発生させるべきではありませんか?
私はCの経験がほとんどありません。前のコースでAssemblyを勉強しましたが、ごく簡単です。time.hのAPIを読み込もうとしましたが、解決策を見つけることができませんでした。
私が得ることができるどんな助けやヒントにもとても感謝しています!
ありがとう、Z