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, чтобы узнать, как это сделать.