Il y a pleins de subtilité dans ce petit bout code. Faut voir que execvp() ne retourne jamais sauf en cas d'erreur où il positionne errno. Donc la macro CHECK_ERR(), va gérer les cas d'erreur de fork() (ce qui est évident) ou de execvp()` (ce qui est déjà plus subtile).
La gestion du fils est hors du switch alors que sémantiquement elle devrait être dans le default (amha). Et on a du coup un truc qui est de genre :
# Petite review
Posté par barmic 🦦 . En réponse au journal bout de code pour relancer une commande dans certaines conditions. Évalué à 4.
Je ne suis pas un grand connaisseur du C et ça fait longtemps que je n'ai pas pratiqué.
Mais lire du code c'est toujours amusant :)
Il y a pleins de subtilité dans ce petit bout code. Faut voir que
execvp()ne retourne jamais sauf en cas d'erreur où il positionneerrno. Donc la macroCHECK_ERR(), va gérer les cas d'erreur defork()(ce qui est évident) ou deexecvp()` (ce qui est déjà plus subtile).La gestion du fils est hors du
switchalors que sémantiquement elle devrait être dans ledefault(amha). Et on a du coup un truc qui est de genre :Bien sûr ce n'est qu'un avis personnel qui est là pour ouvrir une discussion :)
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll