Re: system() retourne -1 et ENOMEM

Page principale

Répondre à ce message
Auteur: Francois-Xavier 'FiX' KOWALSKI
Date:  
À: olivier.eribon
CC: guilde
Sujet: Re: system() retourne -1 et ENOMEM
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