4
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
4

1 回答 1

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: 
于 2012-12-22T08:08:20.620 回答