写 Go 代码的时候,我期望将 cmd 的错误信息打印出来,代码如下
1 | var cmdOut, cmdErr bytes.Buffer |
ping 一个不通的域名产生了报错,什么都没有打印出来,而是给了个返回码2。
当时我没有意识到这个问题,把代码发到群里,一个大佬 Cavan.xu 跑了一下代码,指出了问题出现在 log.Fatal
上。
改了一下,程序如期运行。
1 | // log.Fatal(err) |
看一下这个 log.Fatal
源码。Fatal 等价于 Print() 然后调用 os.Exit(1)。
1 | // Fatal is equivalent to Print() followed by a call to os.Exit(1). |