Привет, переполнение стека: Иногда читатель, первый раз плакат.IPC между приложением python и инъецированной DLL
фона:
окно Windows, работает XP SP3, скоро будет повышен до Windows Seven (MSDNAA < 3)
У меня есть впрыскивается DLL, которая получает циклы зацепив функцию, которая называется тысячи раз в секунду.
Я хотел бы сообщить/управлять этой DLL через приложение python. В основном, DLL выполняет эту работу, приложение python поставляет мозги/принятие решений.
Мой план игры для этого, есть ли у меня счетчик и инструкция if в DLL. Каждый раз, когда вызываемая функция вызывается, counter ++, а затем возвращается к исходной функции до тех пор, пока что-то вроде if (counter == 250) {// dostuff(); }. Мой, хотя позади этого, позволит целевому приложению работать в основном беспрепятственно, но все равно позволит мне делать интересные вещи.
Проблема:
Я на полной потери, какой метод IPC я должен использовать, чтобы сделать связь. У нас есть сокеты, общая память, каналы, сопоставление файлов (?), RPC и другие (казалось бы) эзотерические вещи, такие как запись в буфер обмена.
Я НИКОГДА не выполнял никаких IPC за пределами примеров игрушек.
Я довольно уверен, что нужно что-то, что:
- Может обрабатывать говорить взад и вперед между питон и DLL
- Не блокировать/ждать
- Можно проверить для ожидания данных, и продолжить работу, если нет каких-либо
- Если замки участвуют, могут продолжать вместо ожидания
- не стоит много времени, чтобы читать/писать слишком
Помощь? Спасибо за ваше время, я надеюсь, что предоставил достаточную общую информацию и не нарушил никаких принятых конвенций.
Я хотел бы добавить, что связанная с этим тема коробка очень крутая, и я просматривал ее перед публикацией.
Использование файла журнала - это * не * IPC вообще. – ulidtko
@ulidtko Файловая система является самой старой и надежной формой синхронизации IPC. Вот почему стандарт POSIX имеет тот же API для всех форм IPC. Поскольку ОС ** должна ** управлять согласованностью и синхронизацией в операциях файловой системы (или не называться ОС), файловая система - это самая простая реализация IPC для использования в программах, отличных от ОС. Попробуйте 'ls/var/run/*.pid' в следующий раз, когда у вас будет доступ к системе * nix. – Apalala
Печать еще более старая и надежная форма ... хранения информации на бумаге. OS ** должна ** управлять согласованностью того, что будет напечатано, и любой человек может управлять всей необходимой синхронизацией. Почему бы вам не попробовать распечатать «Привет, мир!». на бумаге, а затем сканирование и распознавание его для управления вашей программой? Извините, но ваш комментарий не просто аргумент. Принтеры должны печатать документы, файловые системы должны хранить файлы, shmem-pipe-сокеты должны обеспечивать способы выполнения IPC. – ulidtko