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/
|
build/
|
||||||
@@ -2,4 +2,4 @@ Refonte du projet en une commande C
|
|||||||
|
|
||||||
Détails :
|
Détails :
|
||||||
- Développement solo
|
- 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 :
|
// Dans la signature de la fonction :
|
||||||
int is_cc_option(const char *arg, int *cc_o_arg) {
|
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++) {
|
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) {
|
if (strcmp(arg, list_O_args[i]) == 0) {
|
||||||
|
|
||||||
// C'est un -Ox
|
// C'est un -Ox
|
||||||
if (!(*cc_o_arg)) {
|
if (!(*cc_o_arg)) {
|
||||||
// Pas encore de -Ox, on l'accepte
|
// Pas encore de -Ox, on l'accepte
|
||||||
*cc_o_arg = 1;
|
*cc_o_arg = 1;
|
||||||
return 1; // Va dans CC_ARGS
|
return 1; // Va dans CC_ARGS
|
||||||
}
|
}
|
||||||
|
|
||||||
// Déjà un -Ox, on ne fait rien
|
// Déjà un -Ox, on ne fait rien
|
||||||
return 2; // Ignoré
|
return 2; // Ignoré
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user