Подтвердить что ты не робот

Каково возвращаемое значение subprocess.call()?

Я не уверен, что означает возвращаемое значение 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!!"

Пожалуйста, просветите меня: -)

4b9b3361

Ответ 1

Да, Subprocess.call возвращает "код возврата фактического процесса".

Вы можете проверить официальную документацию Subprocess.call и Subprocess.Popen.returncode

Ответ 2

Это код возврата, но имейте в виду это до автора подпроцесса, что означает код возврата. Существует сильная культура 0, означающая успех, но там ничего не обеспечивается.

Ответ 3

Вы находитесь во власти команд, которые вы называете. Рассмотрим это:

test.py

#!/usr/bin/env python
success=False
if not success:
    exit()

Затем запуск вашего кода (с помощью cmd = 'test.py') приведет к УСПЕХ!!

просто потому, что test.py не соответствует соглашению о возврате ненулевого значения, когда оно не выполняется.