Python IPC (межпроцессное взаимодействие) для Vista UAC (контроль доступа пользователей)

Я пишу Filemanager на (wx) Python - многое уже работает. При копировании файлов уже есть диалог прогресса, обработка перезаписи и т. Д.

Теперь в Vista, когда пользователь хочет скопировать файл в определенные каталоги (например,%Program Files%), приложение / сценарий требует повышения прав, которое не может быть запрошено во время выполнения. Поэтому мне нужно запустить другое приложение / скрипт с повышенными правами, который выполняет свою работу, но должен взаимодействовать с основным приложением, чтобы последнее могло обновлять прогресс и т. Д.

Я искал и нашел много статей о том, что разделяемая память и каналы - это самый простой способ. Поэтому я ищу библиотеку ipc "высокого уровня", независимую от платформы, с привязками python с использованием общих mem или pipe.

Я уже нашел ominORB, fnorb и т. Д. Они выглядят очень интересно, но используют TCP/IP, есть ли эквивалентная библиотека с использованием общих mem или pipe? Поскольку ipc-client всегда находится на одной машине, сокеты здесь не нужны. И я также боюсь, что пользователю придется разрешить ipc-socket-коммуникацию на своем персональном брандмауэре.

РЕДАКТИРОВАТЬ: я действительно имею в виду высокий уровень: было бы здорово иметь возможность просто вызывать некоторые функции, например, при использовании omniORB вместо отправки строк в stdin/stdout.

1 ответ

Как насчет того, чтобы просто связаться со вторым процессом, используя stdin/stdout?

Есть некоторые предостережения из-за буферизации ввода и вывода, но взгляните на этот рецепт Python Cookbook, а также на Pexpect, чтобы узнать, как это сделать.

Другие вопросы по тегам