为什么 Python 子进程 return 代码在 运行 Modelsim 可执行文件时始终为 0?
Why is Python subprocess return code always 0 when running Modelsim Executable?
我正在使用 python 的子进程来启动 modelsim 可执行文件。在 CLI 中,我输入 quit -f -code<-5>。这应该以退出代码 -5 退出 modelsim。我尝试了多个不同的子流程,例如 call/run/check_call/checkoutput,但它们都 return 0 就好像它成功了 运行。如果 modelsim 以非零退出代码退出,子进程不应该是 returning 非零 return 代码并引发 CalledProcessError?
例如:
python example.py
在 CLI 中
status = subprocess.call([r"C:\...\...\vsim.exe", "-c", "-do"])
在 python 脚本中
quit -f -code<non-zero integer>
在 CLI 中
而不是退出尝试 "exit -f -code 5"。
注意 Modelsim 使用 1 到 231 作为它们自己的错误消息,所以我会使用 256 以上的数字。
补充:退出和退出对我来说似乎都可以,可能是版本问题?我使用了 Modelsim 2019.4 和 Python 3.7.1。这是我使用的代码:
Python代码:
` 导入系统
导入子流程
def main(argv):
status = subprocess.call([r"vsim.exe", "-c", "-do", "run.do"])
print("vsim returned",status)
sys.exit(status)
if __name__ == '__main__':
main(sys.argv[1:])`
run.do 文件:
vsim top
run 1 us
quit -f -code 34
CMD批处理文件:
python callvsim.py
@echo Python returned %ERRORLEVEL%
并且输出:
Errors: 0, Warnings: 0
vsim returned 34
Python returned 34
祝你好运,
汉斯
www.ht-lab.com
我正在使用 python 的子进程来启动 modelsim 可执行文件。在 CLI 中,我输入 quit -f -code<-5>。这应该以退出代码 -5 退出 modelsim。我尝试了多个不同的子流程,例如 call/run/check_call/checkoutput,但它们都 return 0 就好像它成功了 运行。如果 modelsim 以非零退出代码退出,子进程不应该是 returning 非零 return 代码并引发 CalledProcessError?
例如:
python example.py
在 CLI 中
status = subprocess.call([r"C:\...\...\vsim.exe", "-c", "-do"])
在 python 脚本中
quit -f -code<non-zero integer>
在 CLI 中
而不是退出尝试 "exit -f -code 5"。
注意 Modelsim 使用 1 到 231 作为它们自己的错误消息,所以我会使用 256 以上的数字。
补充:退出和退出对我来说似乎都可以,可能是版本问题?我使用了 Modelsim 2019.4 和 Python 3.7.1。这是我使用的代码:
Python代码:
` 导入系统
导入子流程
def main(argv):
status = subprocess.call([r"vsim.exe", "-c", "-do", "run.do"])
print("vsim returned",status)
sys.exit(status)
if __name__ == '__main__':
main(sys.argv[1:])`
run.do 文件:
vsim top
run 1 us
quit -f -code 34
CMD批处理文件:
python callvsim.py
@echo Python returned %ERRORLEVEL%
并且输出:
Errors: 0, Warnings: 0
vsim returned 34
Python returned 34
祝你好运,
汉斯
www.ht-lab.com