Ajout du filtre pour l'argument '-o' pour l'aviter totalement.
This commit is contained in:
+1
-1
@@ -1,2 +1,2 @@
|
||||
projet.md
|
||||
*priv.md
|
||||
build/
|
||||
@@ -2,4 +2,4 @@ Refonte du projet en une commande C
|
||||
|
||||
Détails :
|
||||
- Développement solo
|
||||
- Apprentissage du C via Deepseek V4 Pro (venice.ai)
|
||||
- Apprentissage du C via Deepseek V4/V3.2 + Qwen 3.8 (venice.ai)
|
||||
@@ -0,0 +1,37 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
int main(void) {
|
||||
pid_t pid = fork();
|
||||
int status;
|
||||
|
||||
if (pid == 0) {
|
||||
// --- CODE DE L'ENFANT ---
|
||||
// L'enfant fait un calcul complexe
|
||||
int a = 15;
|
||||
int b = 3;
|
||||
int resultat = a * b; // 45
|
||||
|
||||
printf("[Enfant] J'ai calculé %d. Je me termine et je donne ce résultat.\n", resultat);
|
||||
|
||||
// exit() tue l'enfant et donne le résultat au système.
|
||||
// Le système le gardera jusqu'à ce que le parent le récupère.
|
||||
exit(resultat);
|
||||
}
|
||||
else {
|
||||
// --- CODE DU PARENT ---
|
||||
// Le parent attend que l'enfant meurt.
|
||||
waitpid(pid, &status, 0);
|
||||
|
||||
// Le parent vérifie si l'enfant est mort normalement
|
||||
if (WIFEXITED(status)) {
|
||||
// Il extrait le nombre donné par l'enfant via exit()
|
||||
int resultat_recupere = WEXITSTATUS(status);
|
||||
printf("[Parent] J'ai récupéré le résultat de mon enfant : %d\n", resultat_recupere);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
+10
-1
@@ -28,15 +28,24 @@ int is_crun_option(const char *arg) {
|
||||
|
||||
// Dans la signature de la fonction :
|
||||
int is_cc_option(const char *arg, int *cc_o_arg) {
|
||||
// D'abord vérifier si c'est un -Ox
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
// Cas de -o qu'on refuse
|
||||
if (strcmp(arg, "-o") == 0) {
|
||||
printf("Argument '-o' impossible !\n");
|
||||
return 2; // On l'ignore
|
||||
}
|
||||
|
||||
// D'abord vérifier si c'est un -Ox
|
||||
if (strcmp(arg, list_O_args[i]) == 0) {
|
||||
|
||||
// C'est un -Ox
|
||||
if (!(*cc_o_arg)) {
|
||||
// Pas encore de -Ox, on l'accepte
|
||||
*cc_o_arg = 1;
|
||||
return 1; // Va dans CC_ARGS
|
||||
}
|
||||
|
||||
// Déjà un -Ox, on ne fait rien
|
||||
return 2; // Ignoré
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user