猿问

关于创建文件的权限,os.FileMode 的哪个组合对应于 fopen 中的 `a`?

考虑以下 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 文档,但没有看到任何好的候选者。


沧海一幻觉
浏览 149回答 1
1回答

慕标琳琳

由于FileMode包括新创建文件的权限位,您需要提供这些:ioutil.WriteFile("/tmp/FooBar",&nbsp;[]byte("Hello&nbsp;World"),&nbsp;os.ModeAppend&nbsp;|&nbsp;0644)
随时随地看视频慕课网APP

相关分类

Go
我要回答