为什么调用 OpenFile 时需要设置权限?

lud*_*nus 2 go

我了解存储在文件系统中的文件和目录的权限意味着什么。但是为什么我在调用 os.OpenFile 时需要设置权限?如果成功打开,它会更新文件系统上的文件权限吗?如果不是 - 用 0000 或 0777 打开同一个文件有什么区别?

https://golang.org/src/os/file.go?s=8454:8520#L272

func OpenFile(name string, flag int, perm FileMode) (*File, error)
...
f, err := os.OpenFile("access.log", os.O_APPEND, 0644)
Run Code Online (Sandbox Code Playgroud)

Fli*_*mzy 5

正如所记录的(强调):

OpenFile 是广义的打开调用;大多数用户将改用 Open 或 Create。如果适用,它会打开具有指定标志(O_RDONLY 等)和perm(在 umask 之前)的命名文件。如果成功,返回的 File 上的方法可用于 I/O。如果有错误,它将是 *PathError 类型。

因此,该perm值仅在创建文件时使用——当打开现有文件时,它不适用,因此被忽略。