Обработка исключений подпроцесса Python

У меня есть программа, написанная на C ++, и все, что она делает, это делит 1/0, чтобы произвести исключение.

Я запускаю .exe этой программы через библиотеку подпроцесса Python. Моя цель — записать и записать исключение, которое делает программа C ++, в Python.

p = subprocess.Popen(['C:\\Users\\name\\Desktop\\Win32Project1.exe'])

Когда эта строка кода выполняется, p является ненулевым значением, означающим, что произошла ошибка.
Я использую Windows 7 и использую Python 3.4.1

0

Решение

Я совершенно уверен, что вы не можете отслеживать исключения из другого процесса.
Вы должны попытаться перехватить исключение в программе на C ++ и передать его одним из многих средств межпроцессного взаимодействия.

НТН,
Cabbi

0

Другие решения

попробуй это

cmd = ['C:\\Users\\name\\Desktop\\Win32Project1.exe']
out, err = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
print out  # this prints the output of the execution
print err  # this prints if any error is returned

У меня нет окон, так что это не проверено, но может помочь вам, для получения дополнительной информации посмотрите Вот

0

Вы также можете передать другие параметры в subprocess.Popen, которые указывают куда идут stdin и stderr.

Тогда вы можете сказать что-то лайк:

p = subprocess.Popen('C:\\Users\\name\\Desktop\\Win32Project1.exe', stdout=PIPE, stderr=PIPE)
(stdout_data, stderr_data) = p.communicate()

rc = p.returncode

# assume 0 return code means o.k.
if rc:
parse_error(stderr_data)
# end if
0
По вопросам рекламы [email protected]