Python 如何在go语言中从main获取不同的退出代码,如2或3?
如何从main获取退出代码3或除1之外的任何非零?我试图执行一个程序,但当我执行时,将得到退出代码1而不是3。如果我想得到出口代码3,我需要做什么? 例: 我想通过python脚本运行go脚本请在下面找到python脚本: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
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)