os.NewFile 方法的第二个参数作用是什么?

先来看一段代码

nFile, e := os.Create("./one.txt")
if e != nil {
    log.Fatalf("create file error: %s\n", e)
}
_, e = nFile.Write([]byte("first line\n"))
if e != nil {
    log.Fatalf("wirte file error: %s\n", e)
}

ff := os.NewFile(nFile.Fd(), "abc")
_, e = ff.Write([]byte("another line"))
if e != nil {
    log.Fatalf("another line wirte err:%s\n", e)
}

上述代码的执行结果是创建了 one.txt 文件,并且成功写入了两行文本

first line
another line

我现在有两个疑问

  • os.NewFile 第二个参数 name 的作用是什么?仅仅是标记一个名字?
  • os.NewFIle 的应用场景是什么?是用在只知道文件 fd 的情况下操作该文件?

望指教,谢谢!

讨论数量: 1
    Stdin  = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
    Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
    Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")

文件描述符不一定是写文件,还有通讯的作用。linux下一切皆文件。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!