Il existe une bibliothèque Python standard appelée sous-processus. Il s'agit d'un substitut qui peut exécuter plusieurs fichiers exécutables en même temps, mais cette fois, il était bloqué avec une entrée standard dans le fichier exécutable.
Par exemple, supposons que vous créez le fichier C ++ suivant et en faites un exe.
sample.cpp
include <iostream>
using namespace std;
int main(){
while(true){
int a;
cout << "input"
cin >>a;
cout << a * 2;
return 0;
}
}
Eh bien, je reçois juste le nombre et affiche le nombre qui est doublé, mais je veux continuer à l'exécuter avec while et l'exécuter à partir de python sans le démarrer un par un.
Je ne savais pas quoi faire en faisant ça ...
J'ai transformé le code précédent en un format exécutable comme sample.exe. Ensuite, le code ci-dessous a fonctionné.
import subprocess
#Universel car l'échange avec byte est gênant_newline to true
sample = subprocess.Popen("sample.exe",
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
if sample.stdout.readline() == "input:\n": #Le texte à lire doit inclure jusqu'au saut de ligne.
sample.stdin.write("20\n") #Des pauses sont également requises
sample.stdin.flush() #Puisque l'entrée est en état d'être accumulée dans le tampon, elle devient ici l'entrée pour la première fois.
Cela marche. J'ai écrit la partie importante du code, alors vérifiez-le ensemble. C'est vraiment difficile. sous-processus
Recommended Posts