Могу ли я использовать один файл в качестве буфера? То есть писать и читать одновременно - PullRequest
2 голосов
/ 19 марта 2009

Я хочу, чтобы приложение выписывало информацию одновременно с тем, как ее читает монитор. Приложение является «встроенным» (и на Win32 XP) и поэтому имеет ограниченную функциональность памяти и ввода / вывода.

Самый простой способ сделать это - записать данные в буферный файл из приложения, а затем прочитать тот же файл с помощью приложения монитора. Приложение-писатель - C ++, а читатель - Python на Win32 XP.

Есть библиотеки для этого? Кто-нибудь видел примеры этого?

Я не хочу использовать базу данных, так как не хочу ссылаться на библиотеку базы данных в приложении. То есть не хватает места и может не поддерживаться на встроенной платформе.

Другой способ сделать это через сетевое соединение, но я считаю, что файлы - самое простое решение.

Ответы [ 3 ]

4 голосов
/ 19 марта 2009

В большинстве систем есть несколько решений для того, что вы хотите сделать, например, трубы и сокеты Unix. Они предназначены для этого, в отличие от обычных файлов. Однако есть программы, которые делают это на обычных файлах, и я думаю, что наиболее ярким примером этого является хвост утилиты unix, который может «следовать» за файлом.

Взгляните на
http://msdn.microsoft.com/en-us/library/aa365590(VS.85).aspx

В Python есть хорошая библиотека-оболочка для win32, поэтому все, что вы там видите, может иметь доступ из python.

2 голосов
/ 21 марта 2009

Вы можете использовать отображенные в память файлы, стандартный модуль Python, называемый mmap.

1 голос
/ 19 марта 2009

То, о чем вы говорите, называется «Межпроцессное взаимодействие». Есть много способов сделать это.

Использование труб Unix.

https://docs.python.org/library/pipes.html

Использование сокетов.

https://docs.python.org/library/socket.html

Использование очередей.

https://docs.python.org/library/queue.html

Любой из них лучше файлового ввода / вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...