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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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