При вызове функции обернутой c как таковой:
f = io.BytesIO()
with stdout_redirector(f):
r = _wrapped_c_function(in_file, out_file)
код возврата возвращается в r
, где коды возврата приведены на основе ошибок, возникающих внутри функции C, однако, если в функции C возникает ошибка, которая НЕ перехватывается функцией C r
, она завершается как 0, а программа Python молча завершает работу как 0, указывая, что ничего не произошло. Однако в stdoutt будет напечатано сообщение типа malloc(): invalid size (unsorted)
.
Как я могу перехватить эти сообщения об ошибках, так как вызов функции не должен ничего печатать, если все работает. Проблема с использованием перенаправителя заключается в том, что при сбое _wrapped_c_function
он выходит из функции Python, прежде чем что-либо может быть записано в буфер f
.