Python IPC (межпроцессное взаимодействие) для Vista UAC (контроль доступа пользователей) - PullRequest
4 голосов
/ 24 января 2009

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

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

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

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

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

1 Ответ

2 голосов
/ 24 января 2009

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

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

...