如果我在写之前删除文件,为什么f.Write()
不会返回任何错误?
package main
import (
"fmt"
"os"
"time"
)
func main() {
f, err := os.Create("foo")
if err != nil {
panic(err)
}
if err := os.Remove("foo"); err != nil {
panic(err)
}
if _, err := f.Write([]byte("hello")); err != nil {
panic(err) // would expect panic here
}
fmt.Println("no panic?")
}
答案 0 :(得分:1)
显然这是预料之中的。
当您删除文件时,您确实删除了该文件的链接(到inode)。如果某人已经打开了该文件,他们就会保留他们拥有的文件描述符。该文件保留在磁盘上,占用空间,如果您有权访问它,可以写入和读取。