Ответ 1
Да, Subprocess.call
возвращает "код возврата фактического процесса".
Вы можете проверить официальную документацию Subprocess.call и Subprocess.Popen.returncode
Я не уверен, что означает возвращаемое значение subprocess.call()
.
Можно ли смело предположить, что нулевое значение всегда означает, что команда выполнена успешно?
Является ли возвращаемое значение эквивалентным для выхода из команды оболочки?
Например, будет ли выполняться следующий фрагмент кода для практически любой команды в Linux?
cmd = "foo.txt > bar.txt"
ret = subprocess.call(cmd, shell=True)
if ret != 0:
if ret < 0:
print "Killed by signal", -ret
else:
print "Command failed with return code", ret
else:
print "SUCCESS!!"
Пожалуйста, просветите меня: -)
Да, Subprocess.call
возвращает "код возврата фактического процесса".
Вы можете проверить официальную документацию Subprocess.call и Subprocess.Popen.returncode
Это код возврата, но имейте в виду это до автора подпроцесса, что означает код возврата. Существует сильная культура 0, означающая успех, но там ничего не обеспечивается.
Вы находитесь во власти команд, которые вы называете. Рассмотрим это:
test.py
#!/usr/bin/env python
success=False
if not success:
exit()
Затем запуск вашего кода (с помощью cmd = 'test.py') приведет к УСПЕХ!!
просто потому, что test.py не соответствует соглашению о возврате ненулевого значения, когда оно не выполняется.