Je m'attends à ce que toutes les sorties soient redigirées vers le
fichier de log, mais il semble que ce ne soit pas le cas. Que faut-il
faire pour capter TOUTES les sorties d'un programme et les rediriger
vers un fichier?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
mpg
Le (on) mercredi 27 août 2008 15:11, Guillaume GOURDIN a écrit (wrote) :
system("blablabla 2>&1 /tmp/tmp.log");
Euh, donc là tu ne rediriges pas la sortie standard ?
Je m'attends à ce que toutes les sorties soient redigirées vers le fichier de log, mais il semble que ce ne soit pas le cas. Que faut-il faire pour capter TOUTES les sorties d'un programme et les rediriger vers un fichier?
commande (arguments) >fichier 2>&1
redirige la sortie standard et l'erreur standard vers fichier. Mais si ton programme écrit ailleurs que sur la sortie standard et l'erreur standard, une redirection shell n'y changera rien...
Manuel.
Le (on) mercredi 27 août 2008 15:11, Guillaume GOURDIN a écrit (wrote) :
system("blablabla 2>&1 /tmp/tmp.log");
Euh, donc là tu ne rediriges pas la sortie standard ?
Je m'attends à ce que toutes les sorties soient redigirées vers le
fichier de log, mais il semble que ce ne soit pas le cas. Que faut-il
faire pour capter TOUTES les sorties d'un programme et les rediriger
vers un fichier?
commande (arguments) >fichier 2>&1
redirige la sortie standard et l'erreur standard vers fichier. Mais si ton
programme écrit ailleurs que sur la sortie standard et l'erreur standard,
une redirection shell n'y changera rien...
Le (on) mercredi 27 août 2008 15:11, Guillaume GOURDIN a écrit (wrote) :
system("blablabla 2>&1 /tmp/tmp.log");
Euh, donc là tu ne rediriges pas la sortie standard ?
Je m'attends à ce que toutes les sorties soient redigirées vers le fichier de log, mais il semble que ce ne soit pas le cas. Que faut-il faire pour capter TOUTES les sorties d'un programme et les rediriger vers un fichier?
commande (arguments) >fichier 2>&1
redirige la sortie standard et l'erreur standard vers fichier. Mais si ton programme écrit ailleurs que sur la sortie standard et l'erreur standard, une redirection shell n'y changera rien...
Manuel.
Paul Gaborit
À (at) Wed, 27 Aug 2008 15:11:30 +0200, Guillaume GOURDIN écrivait (wrote):
j'ai le code suivant:
system("blablabla 2>&1 /tmp/tmp.log");
Je m'attends à ce que toutes les sorties soient redigirées vers le fichier de log, mais il semble que ce ne soit pas le cas. Que faut-il faire pour capter TOUTES les sorties d'un programme et les rediriger vers un fichier?
Ce n'est pas vraiment un problème de Perl mais plutôt un problème de redirection via le shell (auquel, malheureusement, doit faire appel 'system' pour les gérer).
La solution la plus rapide (à écrire) :
system("blablabla > /tmp/tmp.log 2>&1");
La solution la plus propre consisterait à faire un fork avec Perl, puis, dans le processus fils, faire les redirections voulues (toujours en Perl) et finir par le exec de 'blablabla' tandis que le processus père attend la fin du fils...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Wed, 27 Aug 2008 15:11:30 +0200,
Guillaume GOURDIN <trash@hotmail.com> écrivait (wrote):
j'ai le code suivant:
system("blablabla 2>&1 /tmp/tmp.log");
Je m'attends à ce que toutes les sorties soient redigirées vers le
fichier de log, mais il semble que ce ne soit pas le cas. Que faut-il
faire pour capter TOUTES les sorties d'un programme et les rediriger
vers un fichier?
Ce n'est pas vraiment un problème de Perl mais plutôt un problème de
redirection via le shell (auquel, malheureusement, doit faire appel
'system' pour les gérer).
La solution la plus rapide (à écrire) :
system("blablabla > /tmp/tmp.log 2>&1");
La solution la plus propre consisterait à faire un fork avec Perl,
puis, dans le processus fils, faire les redirections voulues (toujours
en Perl) et finir par le exec de 'blablabla' tandis que le processus
père attend la fin du fils...
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Wed, 27 Aug 2008 15:11:30 +0200, Guillaume GOURDIN écrivait (wrote):
j'ai le code suivant:
system("blablabla 2>&1 /tmp/tmp.log");
Je m'attends à ce que toutes les sorties soient redigirées vers le fichier de log, mais il semble que ce ne soit pas le cas. Que faut-il faire pour capter TOUTES les sorties d'un programme et les rediriger vers un fichier?
Ce n'est pas vraiment un problème de Perl mais plutôt un problème de redirection via le shell (auquel, malheureusement, doit faire appel 'system' pour les gérer).
La solution la plus rapide (à écrire) :
system("blablabla > /tmp/tmp.log 2>&1");
La solution la plus propre consisterait à faire un fork avec Perl, puis, dans le processus fils, faire les redirections voulues (toujours en Perl) et finir par le exec de 'blablabla' tandis que le processus père attend la fin du fils...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>