2009-01-24 25 views
4

J'écris un gestionnaire de fichiers dans (wx) python - beaucoup fonctionne déjà. Lorsque vous copiez des fichiers, il y a déjà une boîte de dialogue de progression, de gestion de remplacement, etc.Python IPC (Inter Process Communication) pour Vista UAC (contrôle d'accès utilisateur)

Maintenant dans Vista lorsque l'utilisateur veut copier un fichier dans certains répertoires (par exemple% Program Files%) l'application/script a besoin d'élévation, ce qui ne peut pas être demandé pour à l'exécution. Donc je dois commencer une autre application/script élevé, qui fait le travail, mais doit communiquer avec l'application principale, donc ce dernier peut mettre à jour la progression, etc

J'ai cherché et trouvé beaucoup d'articles disant la mémoire partagée et les tuyaux sont le moyen le plus facile. Donc, ce que je cherche est une bibliothèque ipc indépendante de la plate-forme 'haut niveau' avec des liaisons python utilisant mem ou pipes partagées.

J'ai déjà trouvé ominORB, fnorb, etc. Ils ont l'air très intéressants, mais utilisent TCP/IP, y a-t-il une bibliothèque équivalente utilisant mem ou pipe partagé? Puisque le client ipc est toujours sur la même machine, les sockets ne semblent pas nécessaires ici. Et j'ai aussi peur que l'utilisateur doive autoriser ipc-socket-communications sur son pare-feu personnel.

EDIT: Je veux vraiment dire haut niveau: ce serait génial de pouvoir appeler simplement certaines fonctions comme lorsque vous utilisez omniORB au lieu d'envoyer des chaînes à stdin/stdout.

Répondre

2

Que diriez-vous juste de communiquer avec le deuxième processus en utilisant stdin/stdout?

Il existe certaines mises en garde dues à la mise en mémoire tampon d'entrée et de sortie, mais jetez un oeil à this Python Cookbook recipe, et aussi Pexpect, pour des idées sur la façon de procéder.

+0

merci, j'ai édité ma question pour souligner, que je veux pouvoir appeler une fonction comme avec omniORB. – RSabet