diff --git a/.gitignore b/.gitignore index 174772c..1279004 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -projet.md +*priv.md build/ \ No newline at end of file diff --git a/README.md b/README.md index 5c743d6..5c8bd3f 100644 --- a/README.md +++ b/README.md @@ -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) \ No newline at end of file +- Apprentissage du C via Deepseek V4/V3.2 + Qwen 3.8 (venice.ai) \ No newline at end of file diff --git a/src/compile.c b/src/compile.c new file mode 100644 index 0000000..6247219 --- /dev/null +++ b/src/compile.c @@ -0,0 +1,37 @@ +#include +#include +#include +#include + +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; +} \ No newline at end of file diff --git a/src/main.c b/src/main.c index 5338f29..8401429 100644 --- a/src/main.c +++ b/src/main.c @@ -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é }