IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

problème d'appel de fontion !


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Points : 35
    Points
    35
    Par défaut problème d'appel de fontion !
    slt tout le monde !
    j'ai cette fonction qui me fait un recouvrement d'un processus pour executer une commande en avant plan ! mais je ne sais pas pourquoi elle m'affiche pas le résultat ? et pourtant quand je l'ai testé toute seule dans un programme ça a bien marché ? voici son code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    void avantplan(char comm[80]) 
    {
        int pid,i=0;
        char *file;
        char *argv[10];
        char *B;
        char *res;
        char *comup;
        comup = strdup(comm);
        res = strtok_r(comup," ",&B);
        if (res != NULL) file =res; else res=comm;
        while(res != NULL)
        {
          argv[i]=res;
          i++;
          res = strtok_r(NULL," ",&B);
        }
         argv[i]=NULL;
        /* création de processus */
        pid = fork();
        switch (pid) {
        case -1: /*erreur produite lors du fork*/
            exit(1);
            break;
        case 0:
            /* PROCESSUS FILS */
            execvp(file,argv);
            exit(0); /* fin du processus fils */
            break;
        default:
            /* PROCESSUS PERE */
            wait(0); /* attente de la fin du fils */
        }
    }
    et je l"ai appelé comme suit dans le programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char commande [80] ;
    .......
    avantplan(commande);
    a votre avis pourquoi
    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    seule ça marche :

    donc comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    int main(void) 
    {
        char comm[80];
        int pid,i=0;
        char *file;
        char *argv[10];
        char *B;
        char *res;
        char *comup;
        comup = strdup(comm);
        res = strtok_r(comup," ",&B);
        if (res != NULL) file =res; else res=comm;
        while(res != NULL)
        {
          argv[i]=res;
          i++;
          res = strtok_r(NULL," ",&B);
        }
         argv[i]=NULL;
        /* création de processus */
        pid = fork();
        switch (pid) {
        case -1: /*erreur produite lors du fork*/
            exit(1);
            break;
        case 0:
            /* PROCESSUS FILS */
            execvp(file,argv);
            exit(0); /* fin du processus fils */
            break;
        default:
            /* PROCESSUS PERE */
            wait(0); /* attente de la fin du fils */
        }
    }

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    @laracrof87:

    parce que déjà il y a pas mal de fautes...

    Dans la déclaration de la fonction, ce serait mieux de mettre :

    void avantplan ( char *comm )


    Ensuite, tu utilises des paramètres sans les passer : argv etc..

    Ensuite tu copies des chaines avec =, ce qui ne copie pas :

    etc etc

    Beaucoup de travail encore..

    Et ajuste les paramètres de ton compilateur pour voir les erreurs...

Discussions similaires

  1. [onenter/submit] Problème d'appel de page
    Par Kylen dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/08/2005, 14h11
  2. Problème d'appel de module.
    Par TomPad dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 10h24
  3. Autre contexte mais tjs problème d'appel fct interne
    Par Neilos dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/08/2004, 13h51
  4. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  5. Réponses: 4
    Dernier message: 19/04/2004, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo