亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

訪問 ctime 不返回文件的創建時間

訪問 ctime 不返回文件的創建時間

Go
九州編程 2022-09-05 09:14:18
我有一個來自信息(mac os)的文件:Created: Tuesday, 26 May 2020 at 11:21Modified: 26 May 2021 at 15:40經過一些研究,我試圖做到:ctim := fi.Sys().(*syscall.Stat_t).Ctimatim := fi.Sys().(*syscall.Stat_t).Atimmtim := fi.Sys().(*syscall.Stat_t).Mtimlog.Println("ctim:", time.Unix(ctim.Sec, ctim.Nsec))log.Println("atim:", time.Unix(atim.Sec, atim.Nsec))log.Println("mtim:", time.Unix(mtim.Sec, mtim.Nsec))但他們都回來了:app_1  | 2021/05/26 15:40:17 ctim: 2021-05-26 15:40:17.199113879 +0000 UTCapp_1  | 2021/05/26 15:40:17 atim: 2021-05-26 15:40:16.457499729 +0000 UTCapp_1  | 2021/05/26 15:40:17 mtim: 2021-05-26 15:40:05.982391804 +0000 UTC此外,我正在使用docker + docker-compose,從中構建并保存二進制文件。golang:1.14-stretchdebian:bullseye-slim顯然,這不是文件的創建時間。任何想法,我怎么能得到這個信息?
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

ctime不是“創建時間”,而是“inode change time”。

OSX具有“出生時間”,這是Finder顯示為“創建日期”,而在OsX上的Go中()中,它可以用作系統調用字段。Stat_t。GOOS=darwinBirthtimespec

但是,POSIX沒有定義出生時間,許多其他Unix系統要么沒有這個概念,要么沒有向用戶程序公開它。直到最近,Linux還是其中之一。它的系統調用不會返回出生時間,所以Go's也不會。在 Linux 4.11 中添加的系統調用確實會返回它,但這不在 Go stdlib 中。statos.Statstatx

statx受 golang.org/x/sys/unix 但它一個相當低級的接口(例如,它需要一個開放目錄的整數文件描述符號;它不能直接在)。如果它運行在太舊的Linux版本上,即使它足夠新,如果你調用它的文件在沒有出生時間支持的文件系統上,或者如果該文件系統的Linux文件系統驅動程序根本沒有更新,你得到的可能也是零。os.FileENOSYSBtime


查看完整回答
反對 回復 2022-09-05
  • 1 回答
  • 0 關注
  • 63 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號