2010-05-29 2 views
3

J'ai besoin de fournir des informations différentes à différentes instances de terminal au lieu de les imprimer dans le même flux de sortie, par exemple std.err ou std.out.comment je peux ouvrir différents terminaux linux pour afficher différents types d'informations de débogage dans python?

par exemple: J'ai 5 sortes d'informations dire AE doivent être affichées sur les différentes fenêtres de terminal sur le même bureau, qui ressemble à

[Terminal 1] < - pour afficher des informations A

[borne 2] < - pour afficher des informations B

[borne 3] < - pour afficher des informations C

[borne 4] < - pour afficher des informations D

[Terminal 5] < - pour afficher des informations E

Je sais que je peux les sortir dans des fichiers différents, puis terminaux ouverts lire le fichier en boucle, mais ce que je veux est python programme peut ouvrir le terminal par le programme lui-même et imprimez-les directement lorsque cela est nécessaire.

Est-ce possible?

Merci!

KC

[modifier] la meilleure solution pour ce cas est d'utiliser SOCKET comme IPC Je pense que si la ressource est pas une question, il viendra avec une capacité plus compatible - un mode client serveur. et le tuyau/sous-processus seront également les solutions utiles sous la même plate-forme

Répondre

3

Ouvrez un tuyau, puis branchez un terminal à cat en lisant à partir de l'extrémité de lecture du tuyau et écrivez dans l'extrémité d'écriture du tuyau.

1

En utilisant le module subprocess, il suffit d'exécuter plusieurs instances de n'importe quel programme de terminal que vous aimez, chacune exécutant "cat", en utilisant subprocess.Popen. Passez stdin = subprocess.PIPE en plus de la commande de terminal à Popen. Ensuite, vous pouvez simplement écrire sur l'attribut stdin de chaque terminal.

Quelque chose le long des lignes de (non testé!):

import subprocess 
p = subprocess.Popen('xterm -e "cat > /dev/null"', stdin=subprocess.PIPE) 
p.stdin.write("Hello World!") 
+0

merci! la ligne d'origine semble manquer paramètre "shell = True", sinon il va aller exceptionnel. cependant, après avoir ajouté le shell = True, est montre rien sur le xterm ... importation subprocess p = subprocess.Popen ('xterm -e "cat>/dev/null"', shell = True , stdin = subprocess.PIPE) p.stdin.write ("Bonjour tout le monde!") –

+0

Peut-être est-ce dû au tampon? Essayez p.stdin.flush() après avoir écrit dessus. Je suis désolé mais je n'ai pas accès à un terminal Linux pour le moment. – taleinat

Questions connexes