为什么运行Modelsim可执行文件时Python子进程返回代码始终为0?

问题描述 投票:0回答:1

我正在使用python的子进程来启动modelsim可执行文件。在CLI中,输入quit -f -code 。这应该以退出代码-5退出modelsim。我尝试了多个不同的子过程,例如call / run / check_call / checkoutput,但是它们都返回0,就好像它成功运行一样。如果modelsim以非零退出码退出,那么子流程不应该返回非零返回码并引发CalledProcessError吗?

例如:CLI中的python example.pypython脚本中的status = subprocess.call([r"C:\...\...\vsim.exe", "-c", "-do"])CLI中的quit -f -code<non-zero integer>

python modelsim
1个回答
1
投票

而不是退出,请尝试“退出-f-代码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

© www.soinside.com 2019 - 2024. All rights reserved.