Python ctypes: как использовать функции C stdioPython

Программы на Python
Anonymous
Python ctypes: как использовать функции C stdio

Сообщение Anonymous »

В коде C очень часто используются функции , такие как fprintf , которые работают со структурами FILE. Стандартная библиотека Python имеет очень похожие классы, такие как io.BytesIO, io.TextIOWrapper, например, sys.stderr Python — это класс io.TextIOWrapper.
Есть ли удобный способ передать классы Python io в функции C? или это слишком много хлопот?

Мое текущее решение — передать дескрипторы файлов в функции C, а на стороне C использовать функции, которые работают с дескрипторами файлов, такие как запись, чтение. например:

Код: Выделить всё

import ctypes as C
libc = C.CDLL("libc.so.6")
msg = "some message\n"
libc.write(2, msg, len(msg))
# write msg to stderr on the C side
Этот подход неплох, но его нельзя использовать с уже существующим кодом, использующим структуры FILE, а также это означает, что если коду C требуется буферизация ввода-вывода, буфер необходимо передавать в функцию отдельно.
>

Подробнее здесь: https://stackoverflow.com/questions/798 ... -functions

Вернуться в «Python»