package main
import "os"
import "fmt"
func main() {
_, err := os.Getwd()
if err != nil {
fmt.Println(err)
}
}
这有时会打印出EOF错误。有谁知道为什么?通常会发生一些os.Chdir,但这并没有错误。
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
go version go1.0.3
答案 0 :(得分:1)
这是os.Getwd
中的一个错误,导致它在不支持getwd
系统调用的平台上,当工作目录不再存在时将EOF返回为错误。这是OS X上可重复的测试用例。
package main
import "os"
import "fmt"
const DIR = "/tmp/somedir"
func main() {
os.Remove(DIR)
if err := os.Mkdir(DIR, 0755); err != nil {
fmt.Println(err)
return
}
if err := os.Chdir(DIR); err != nil {
fmt.Println(err)
return
}
if err := os.Remove(DIR); err != nil {
fmt.Println(err)
return
}
wd, err := os.Getwd()
fmt.Println("err:", err)
fmt.Println("wd:", wd)
}
输出:
err: EOF
wd: