我正在使用以下软件包:os / exec
http://golang.org/pkg/os/exec/在操作系统中执行命令,但我似乎找不到获取退出代码的方法。我虽然可以阅读输出
即。
package main
import(
"os/exec"
"bytes"
"fmt"
"log"
)
func main() {
cmd := exec.Command("somecommand", "parameter")
var out bytes.Buffer
cmd.Stdout = &out
if err := cmd.Run() ; err != nil {
//log.Fatal( cmd.ProcessState.Success() )
log.Fatal( err )
}
fmt.Printf("%q\n", out.String() )
}
很容易确定退出代码是0还是其他。在第一种情况下,cmd.Wait()
将返回nil(除非在设置管道时出现另一个错误)。
不幸的是,在错误的情况下,没有独立于平台的方法来获取退出代码。这也是它不属于API的原因。以下代码段适用于Linux,但我尚未在其他平台上对其进行测试:
package main
import "os/exec"
import "log"
import "syscall"
func main() {
cmd := exec.Command("git", "blub")
if err := cmd.Start(); err != nil {
log.Fatalf("cmd.Start: %v", err)
}
if err := cmd.Wait(); err != nil {
if exiterr, ok := err.(*exec.ExitError); ok {
// The program has exited with an exit code != 0
// This works on both Unix and Windows. Although package
// syscall is generally platform dependent, WaitStatus is
// defined for both Unix and Windows and in both cases has
// an ExitStatus() method with the same signature.
if status, ok := exiterr.Sys().(syscall.WaitStatus); ok {
log.Printf("Exit Status: %d", status.ExitStatus())
}
} else {
log.Fatalf("cmd.Wait: %v", err)
}
}
}
只要遵循
的 API
文档,以了解更多:)
我正在研究lib,它使用了很多文件系统函数。 我想要的是,我的函数根据errno返回各种错误代码(而不仅仅是-1作为错误),以防文件系统函数失败。 虽然我可以直接使用errno值,但我希望在函数,错误代码和系统errno之间创建一些抽象层(例如,我的错误值从-1000开始,并且是负值,而errno值是正值)。 我的问题是什么是最好的实现方式。 现在我看到两种可能的解决方案: 使用带有错误代码的枚举
本文向大家介绍C# 获取进程退出代码的实现示例,包括了C# 获取进程退出代码的实现示例的使用技巧和注意事项,需要的朋友参考一下 我需要写一个程序,让这个程序知道另一个程序是否正常退出,于是就需要获取这个进程的退出代码 在程序如果需要手动退出,可以设置当前的退出代码 这时的程序运行就退出,同时退出的代码就是 -100 这和 C 语言的在 main 函数返回值一样 在 C# 如果想要实现 C 语言的
问题内容: 每当我运行任何代码时,控制台始终以结尾。 例如,如果我只打印(“ hellow”): 有什么办法可以使输出“成螺旋形”? 问题答案: 您知道它不是输出的一部分吗?这只是IDE控制台提供的其他信息。实际程序只是按预期输出。 这样说意味着一切正常。如果程序中发生异常,否则将使用非零参数生成,IDE将通知您有关此信息,这是有用的调试信息。 在生产中,您不应该从IDE运行Python程序,因此
问题内容: 我可以在node.js中运行bash命令,如下所示: 如何获得该命令的退出代码(在此示例中)?我试过跑步 尽管如此,无论上一个命令的退出代码如何,它总是返回0。我想念什么? 问题答案: 这两个命令在单独的shell中运行。 要获取代码,您应该能够签入回调。 如果这不起作用,则需要添加一个事件处理程序 例如
问题内容: 我需要从命令行程序中获取退出状态代码。不用担心,我用$?。但是对于ftp,即使它没有连接,它也会打开ftp shell,所以我无法理解连接没有建立。 尝试以下代码以了解: 有什么帮助吗?谢谢菲利波 问题答案: 您应该从ftp命令中查找成功消息,而不是查找状态。这是“ 226传输完成”。您可以在系统上使用ftp手册进行确认。 这是一个示例脚本。