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



我正在使用python的子进程来启动modelsim可执行文件。在 CLI 中,我输入 quit -f -code<-5>。这应该退出模型im,退出代码为 -5。我已经尝试了多个不同的子进程,例如调用/运行/check_call/检查输出,但它们都返回 0,就好像它成功运行一样。如果 modelsim 以非零退出代码退出,子进程不应该返回非零返回代码并引发 CalledProcessError 吗?

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

与其退出,不如尝试"exit -f -code 5"。

注意 Modelsim 使用 1 到 231 作为他们自己的错误消息,所以我会使用大于 256 的数字。

补充:退出和退出似乎对我来说都很好,可能是版本问题?我使用了Modelsim 2019.4和Python 3.7.1。这是我使用的代码:

蟒蛇代码:

' 导入系统
导入子流程

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

最新更新