Autor: olivier.eribon Datum: To: francois-xavier.kowalski CC: guilde Betreff: Re: system() retourne -1 et ENOMEM
Merci pour cette bonne idee, nous avions pensez a quelques chose de similaire
mais sans cette ruse pour facilite le passage de la commande system a
effectuer. Nous allons donc la mettre a profit.
Cordialement
Olivier Eribon
Selon Francois-Xavier 'FiX' KOWALSKI <francois-xavier.kowalski@???>:
> olivier.eribon@??? wrote:
> > Bonjour,
> >
> > J'ai un probleme avce un logiciel maison un peu gourmant en memoire.
> Jusqu'a
> > present les appels system au sein de ce logiel se passait bien mais depuis
> une
> > augmentation de l'utilisation de la memoire le retour d'un appel system est
> > toujours -1 et errno 12 (ENOMEM pas assez de memoire).
> >
> > Ce soft est truffe d'appel system.
> > Les plus simple a remplacer sont du style
> > system("rm -rf /tmp/toto"); -> remove("/tmp/toto");
> > Mais d'autres sont tres difficile a modifier.
> >
> > Comment faire des le fork la memoire ne permet pas la duplication.
> >
>
> Simple: fait un poll de shell (sh -c) fork-es avec popen(3) au debut de
> la vie de ton programme principal (quand il prends peut de memoire).
> Quand il te mprens le besoin de faire un system(3), fait un fprintf sur
> le FILE8 renvoye pqr popen pour executer la commande.
>
> Apres ca il faut ruser un peut pour reccuperer le code de retour du
> programme fils ;-)
>
> --FiX
>
>