Behalten Sie einen Unterprozess am Leben und geben Sie ihm Befehle? Python

8

Wenn ich ein neues subprocess in Python mit einem gegebenen Befehl spawne (sagen wir, ich starte den Python-Interpreter mit dem python -Befehl), wie kann ich neue Daten an den Prozess senden (via STDIN)?

    
n0pe 17.02.2012, 04:13
quelle

3 Antworten

8

Verwenden Sie das Standardmodul Subprozess . Sie verwenden subprocess.Popen (), um den Prozess zu starten, und er wird im Hintergrund ausgeführt (d. H. Zur gleichen Zeit wie Ihr Python-Programm). Wenn Sie Popen () aufrufen, möchten Sie wahrscheinlich die Parameter stdin, stdout und stderr auf subprocess.PIPE setzen. Dann können Sie die Felder stdin, stdout und stderr für das zurückgegebene Objekt verwenden, um Daten zu schreiben und zu lesen.

Nicht getesteter Beispielcode:

%Vor%     
user9876 17.02.2012, 12:07
quelle
3

Nicht.

Wenn Sie Befehle an einen Subprozess senden möchten, erstellen Sie eine Pty und verzweigen Sie dann den Subprozess mit einem Ende der Pty an seinem STDIN.

Hier ist ein Ausschnitt aus meinem Code:

%Vor%

In diesem Code ist der pty an stderr angehängt, weil er Fehlermeldungen empfängt, anstatt Befehle zu senden, aber das Prinzip ist das gleiche.

    
Michael Dillon 17.02.2012 04:41
quelle
0

Ein Tunnel, der von Subprozess erstellt wurde, um mehrere Befehle auszulösen, kann nicht am Leben erhalten werden. Um dies zu erreichen, können Sie paramiko betrachten, für andere Dinge wie subprocess stdin, stdout, stderr können Sie diesen Link python subprocess , da dies dein erstes Python-Projekt ist, liest und probierst du es besser.

    
avasal 17.02.2012 04:33
quelle

Tags und Links