考虑以下 Golang 中的短程序,它只是尝试写入一个文件。
package main
import "io/ioutil"
import "os"
func main() {
ioutil.WriteFile("/tmp/FooBar", []byte("Hello World"), os.ModeAppend)
}
运行这个程序后,我得到一个具有以下权限的文件。
---------- 1 merlin sudo 5 Oct 12 15:02 /tmp/FooBar
权限基本上无法使用。
如果我运行等效的 C 程序。
#include <stdio.h>
int main(){
FILE* foo = fopen("/tmp/BarFoo", "a");
fprintf(foo, "Hello World");
fclose(foo);
}
然后我得到一个看起来像这样的文件,这是更可取的。
-rw-r--r-- 1 merlin sudo 11 Oct 12 15:10 /tmp/BarFoo
在 Golang
程序中生成具有与 C 程序相同权限的文件的正确标志组合是什么?
我看过 FileMode documentation但没有看到任何好的候选人。
最佳答案
由于 FileMode
包含新创建文件的权限位,因此您需要提供:
ioutil.WriteFile("/tmp/FooBar", []byte("Hello World"), os.ModeAppend | 0644)
关于go - 关于创建文件的权限,os.FileMode 的哪个组合对应于 fopen 中的 `a`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33091071/