我正在尝试使用以下代码将恐慌/标准错误重定向回 bash 终端:
if err := syscall.Dup2(-1,int(os.Stderr.Fd())); err != nil { log.Fatalf("Failed to redirect stderr to bash: %v",err) }
但是错误给了我一个“错误的文件描述符”,可能是因为-1
我在第一个参数中使用了。我选择这个值是-1
因为我发现它int(file.(*os.File).Fd())
返回了一个-1
when file.Close()
has been called。
至于我想做什么。在我的程序的其他地方,我调用了一个syscall.Dup2(int(file.Fd()), int(os.Stderr.Fd()))
,它将 stderr 记录到一个外部文件中。但有时我希望 stderr 指向 bash 终端。
https://golang.org/pkg/syscall/没有给出 syscall.Dup2 的详细解释。我开始研究 file.Fd() 返回什么以及它是如何使用的,但也没有完全理解。
谁能告诉我如何将 stderr 重定向回 bash 终端?
收到一只叮咚
红糖糍粑
明月笑刀无情
相关分类