OVH Cloud OVH Cloud

Supprimer les logs d'un programme appelé par system() ?

3 réponses
Avatar
ctobini
Bonjour,

J'utilise un programme dans un de mes scripts gr=E2ce =E0 system().

Ce programme est tr=E8s bavare, et je voudrais supprimer ses messages
dans le Terminal.

Sauriez-vous comment effectuer ceci ?

En vous remerciant.

C=2E Tobini

3 réponses

Avatar
Paul Gaborit
À (at) 16 Dec 2005 07:04:32 -0800,
"ctobini" écrivait (wrote):
J'utilise un programme dans un de mes scripts grâce à system().

Ce programme est très bavare, et je voudrais supprimer ses messages
dans le Terminal.

Sauriez-vous comment effectuer ceci ?


En redirigeant sa sortie vers /dev/null :

system("/le/chemin/de/la/commande ses arguments > /dev/null");

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Jacques Caron
Salut,

On Fri, 16 Dec 2005 16:04:32 +0100, ctobini wrote:

J'utilise un programme dans un de mes scripts grâce à system().

Ce programme est très bavare, et je voudrais supprimer ses messages
dans le Terminal.


Plein d'options:

- simple mais pas forcément portable:
system("programme >/dev/null 2>/dev/null")

- si tu n'as plus besoin des sorties standard toi-même:
close STDOUT;
close STDERR;
system("programme");

- plus compliqué, pas forcément portable:
faire un fork puis close STDOUT et STDERR, puis system

- si tu as besoin des sorties standard:
faire une copie de STDOUT et STDERR, les fermer, faire l'appel, puis
restaurer STDOUT et STDERR

- simple
`programme`; ou qx{programme};

- un peu plus long:
utiliser open("programme |") et avaler ce qu'il répond en retour et le
jeter aussi sec genre:
open my $pipe,"programme |" or die;
while (<$pipe>);
close my $pipe;

On peut probablement encore trouver un paquet d'autres méthodes...

Jacques.
--
Oxado http://www.oxado.com/

Avatar
ctobini
Bonjour et merci pour vos réponses,

Le script étant destiné uniquement à un système Linux, je vais pour
l'instant utiliser une redirection vers /dev/null.

Je ne manquerai évidemment pas de tester les autres solutions
proposées :-)

Merci encore et bonne journée.

C. Tobini