Forum Programmation.c appel système exec

Posté par  .
Étiquettes : aucune
0
26
déc.
2004
bonsoir
je suis débutante donc ma question va vous paraître bête, mais je serais très contente si vous me repondiez.
en fait je ne comprend pas du tout ce que fais l'appel système exec et toute sa famille dailleur.
voila :-)
merci
  • # Il execute :)

    Posté par  (site web personnel) . Évalué à 4.

    Il te permet de lancer un programme...
    Plus précisément, ton programme est remplacé par celui que tu demandes d'executer, il est donc conseillé de faire un fork avant si tu veux faire autre chose derrière.

    C'est de quel point de vue que tu ne comprends pas, à quoi il sert, comment on l'utilise ?
    • [^] # Re: Il execute :)

      Posté par  . Évalué à 1.

      voici le premier exemple qu'on a traité en cours et j'ai pas du tout compris ce que ça fais:

      //programme test_exec.c
      #include<unistd.h>
      #include<stdio.h>
      #include<stdlib.h>
      #include<errno.h>
      int main()
      { char* arg[] = {"/bin/ps","f",NULL};
      printf("bonjour....\n);
      execvp("/bin/ls",arg);
      printf("echec de execvp\n");
      printf("erreur %s\n",strerror(errno));
      return 0;
      }
      • [^] # Re: Il execute :)

        Posté par  (site web personnel) . Évalué à 3.

        Ben ton programme va lancer le programme /bin/ls.
      • [^] # Re: Il execute :)

        Posté par  (site web personnel) . Évalué à 5.

        int main()
        { char* arg[] = {"/bin/ps","f",NULL};
        printf("bonjour....\n);
        La ca affiche bonjour si tu ajoutes un " :)
        execvp("/bin/ls",arg);
        Ca remplace ton programme par ls (pas très utile de faire execvp si tu lui donnes le chemin complet) avec comme arguments "/bin/ps" et "f". En sachant que normalement, par convention, le premier argument aurait du être le nom du programme tel qu'invoqué, donc "/bin/ls"... Tu est sur que c'est ls et pas ps d'ailleurs ? parce que bon, ps a une option f mais ls n'a pas d'option sans - :-)
        printf("echec de execvp\n");
        printf("erreur %s\n",strerror(errno));
        return 0;
        
        Dans la mesure ou execvp remplace ton processus, cette partie ne devrait pas s'executer. Si tu arrives la c'est que exevp a échoué (par exemple que /bin/ls n'existe pas) donc tu affiches l'erreur.
      • [^] # Re: Il execute :)

        Posté par  (site web personnel) . Évalué à 1.

        Tiens c'est marrant tu fais quoi comme études?? J'ai fais le meme genre de programme y a moins d'un mois moi aussi ;)
        • [^] # Re: Il execute :)

          Posté par  . Évalué à 1.

          ça se trouve, on est dans la même classe. t'es dans quelle fac?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.