Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在go语言中从main获取不同的退出代码,如2或3?_Python_Go_Exit - Fatal编程技术网

Python 如何在go语言中从main获取不同的退出代码,如2或3?

Python 如何在go语言中从main获取不同的退出代码,如2或3?,python,go,exit,Python,Go,Exit,如何从main获取退出代码3或除1之外的任何非零?我试图执行一个程序,但当我执行时,将得到退出代码1而不是3。如果我想得到出口代码3,我需要做什么? 例: 我想通过python脚本运行go脚本请在下面找到python脚本: from subprocess import Popen, PIPE def console(cmd): p = Popen(cmd, shell=True, stdout=PIPE) out, err = p.communicate() retur

如何从main获取退出代码3或除1之外的任何非零?我试图执行一个程序,但当我执行时,将得到退出代码1而不是3。如果我想得到出口代码3,我需要做什么? 例:

我想通过python脚本运行go脚本请在下面找到python脚本:

from subprocess import Popen, PIPE

def console(cmd):
    p = Popen(cmd, shell=True, stdout=PIPE)
    out, err = p.communicate()
    return (p.returncode, out, err)

if __name__ == '__main__':
    result = console('go build test.go')
    result = console('./test')
    result = console('echo $?')
    print 'returncode: %s' % result[0]
    print 'output: %s' % result[1]
    print 'error: %s' % result[2]

我想在Python程序中记录退出状态代码,该代码可以进一步用于其他逻辑。

我猜您正在使用
go run
执行。在这种情况下,退出状态不可用,因为您的可执行文件没有在bash中运行,
run
正在子进程中执行它。要查看差异,请使用
build
并执行它们

示例

$ go build test.go
$ ./test
$ echo $?
3

编辑

如果您使用的是python程序,则无需运行
echo$?
。这将给出错误的答案,因为这是在与执行
/test
命令的shell不同的shell中执行的

您始终可以从
Popen.returncode
中读取命令的退出状态。脚本可以根据需要进行修改

from subprocess import Popen, PIPE

def console(cmd):
    p = Popen(cmd, shell=True, stdout=PIPE)
    out, err = p.communicate()
    return (p.returncode, out, err)

if __name__ == '__main__':
    result = console('./test')
    print result
这将给

$ python test.py
(3, '', None)

您是否正在执行Go的命令,并想要该应用程序的退出代码?或者您运行命令,例如从shell运行命令,并且希望查看该命令所包含的代码?如果您尝试了某项操作,但该操作不起作用,请详细说明您所做的操作以及失败的原因。在这种情况下,您说您试图执行您的程序,但没有得到正确的退出代码。如果你那时能帮助你,那就容易多了。发布了您如何运行代码。2.发布了您在运行程序后如何尝试获取退出代码。您正在使用
go build
。这将只是编译二进制文件,而不是运行它。使用
开始跑步
。另外,您通常不希望在Python的子流程中使用
shell=True
。这完全没有必要,而且可能会给您带来安全问题。我添加了用于运行和记录退出代码的python示例代码。@Dhanshree我添加了一个编辑,以给出python示例。希望能有帮助
$ python test.py
(3, '', None)