Utilisation de proc_open()
PHP, je peux démarrer un processus, lu à partir de STDOUT
et STDERR
(séparément) un nombre quelconque d'octets à la fois à l'aide de fread()
pendant que le processus est en cours, détecter le moment où le processus est réalisé en utilisant feof()
sur les STDOUT
et STDERR
tuyaux , puis utilisez proc_close()
pour obtenir le code de sortie du processus. J'ai fait tout cela en PHP. Cela fonctionne bien, et me donne beaucoup de contrôle.Quel est l'équivalent Perl de proc_open() de PHP, proc_close(), etc.?
Existe-t-il un moyen de faire tout cela en Perl? Pour résumer, je dois être en mesure de faire ce qui suit:
- commencer un processus externe
- lire
STDOUT
etSTDERR
séparément - lire
STDOUT
etSTDERR
un nombre arbitraire d'octets à la fois alors que le processus est en cours d'exécution (par exemple, sans avoir à attendre la fin du processus) - détecter le moment où le processus est terminé
- obtenir le code de sortie du processus
Merci d'avance pour vos réponses.
Je sais que je peux faire plus de ce que je veux comme ceci: système ('commande 2> stderr.txt> stdout Ensuite, il suffit de lire les fichiers pendant que le processus est en cours d'exécution, mais je ne peux pas penser à un moyen facile de détecter quand le processus est terminé (qui n'implique pas l'analyse de sortie "ps ..." ou Quelque chose) ou obtenir son code de sortie – jnrbsn