5Fermer7
squalylLe 10/11/2014 à 12:35
Godzil: ça dépend de la durée de vie du process... Pour un démon par exempl, vaut mieux fermer proprement quand t'as plus besoin d'une ressource, mais j'ai bien vu que tu parlais des cas exceptionnels. Un cleanup explicite peut quand même servir, par exemple, pour un protocole réseau ou quand tu travailles avec des ressources distantes et qu'un timeout coté serveur n'a pas été prévu (ce n'est pas forcément un bug).
Folco (./2) :
on utlise setjmp/longjmp.

MER IL ES FOU!
Folco (./2) :
le moindre appel de lib, prend tout de suite 4 lignes, au niveau source c'est franchement moche, pénible à écrire et difficile à lire.

pas d'accord c'est peut être un peu plus long à écrire mais c'est de loin le plus propre, et pas du tout moche.

J'utilise parfois des "goto errout" pour sauter au point où on libère la ressource :

fopen()
if fail -> exit
des trucs qui peuvent foirer
si fail -> goto errout
d'autres trucs qui peuvent foirer
si fail -> goto errout
acquisition des ressources B
d'autres trucs qui peuvent foirer autrement
si fail -> goto errout2
tout est ok
(eventuellement fclose() si plus utile)
return WIN;

errout2:
liberation ressources acquises en B
ici ça continue tout seul

errout:
fclose()
return FAIL


Avant de me gotoeuler dessus la raison est d'éviter la séquence de

if(fail) {
fclose()
liberation_des_autres_ressources()
}

à répétition.