У меня есть программа, написанная на C ++, и все, что она делает, это делит 1/0, чтобы произвести исключение.
Я запускаю .exe этой программы через библиотеку подпроцесса Python. Моя цель — записать и записать исключение, которое делает программа C ++, в Python.
p = subprocess.Popen(['C:\\Users\\name\\Desktop\\Win32Project1.exe'])
Когда эта строка кода выполняется, p является ненулевым значением, означающим, что произошла ошибка.
Я использую Windows 7 и использую Python 3.4.1
Я совершенно уверен, что вы не можете отслеживать исключения из другого процесса.
Вы должны попытаться перехватить исключение в программе на C ++ и передать его одним из многих средств межпроцессного взаимодействия.
НТН,
Cabbi
попробуй это
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
У меня нет окон, так что это не проверено, но может помочь вам, для получения дополнительной информации посмотрите Вот
Вы также можете передать другие параметры в 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