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

Bibliothèques, systèmes et outils C Discussion :

Problème paramètre avec execv()


Sujet :

Bibliothèques, systèmes et outils C

  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Points : 151
    Points
    151
    Par défaut Problème paramètre avec execv()
    Bonjour ,

    Si j'exécute le code suivant, pas de problèmes ...

    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
     
    #include <stdio.h> 
    #include <string.h> 
    #include <stdlib.h> 
    #include <time.h> 
    #include <assert.h>
    #include <errno.h>
    #include <ctype.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/wait.h>
     
    #define TRUE 1
    #define FALSE 0
    #define DEVICE "/dev/sda1"
    #define FICHIER "diskspace.txt"
     
    int main()
    {
     
     
            char * argument[] = {"ps","-a",NULL};
     
            execv("/usr/bin/ps",argument);
     
            exit(EXIT_SUCCESS);
    }
    Cependant, à partir d'un tableau de pointeurs initialisés en NULL, je veux remplir ma commande, au fur et à mesure ,

    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
     
    #include <stdio.h> 
    #include <string.h> 
    #include <stdlib.h> 
    #include <time.h> 
    #include <assert.h>
    #include <errno.h>
    #include <ctype.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/wait.h>
     
    #define TRUE 1
    #define FALSE 0
    #define DEVICE "/dev/sda1"
    #define FICHIER "diskspace.txt"
     
    int main()
    {
     
     
            char * argument[] = {NULL,NULL,NULL};
     
           strcpy(argument[0],"ps");
     
           strcpy (argument[1],"-al");
     
            execv("/usr/bin/ps",argument);
     
            exit(EXIT_SUCCESS);
    }
    Les strcpy ne marchent pas et cela et bien embêtant car la commande système doit être paramètrable.

    Comment faire ? ( avec la dernière ligne du tableau se terminant par le pointeur NULL )

  2. #2
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    Bonjour,

    Par exemple il est possible de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     	char argument1[200], argument2[200];
           	char * argument[] = {argument1,argument2,NULL};
    Car le problème c'est que les strcpy vont écrire à l'adresse 0 d'où l'erreur de segmentation. Il faut allouer de l'espace pour stocker les chaînes de caractères.

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Points : 151
    Points
    151
    Par défaut Au poil !
    Super merci ! ça marche !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pilotage d'Excel avec VB.NET : problème paramètre xlDown
    Par Paenitentia dans le forum Windows Forms
    Réponses: 4
    Dernier message: 09/12/2009, 15h03
  2. problème dllImport avec tableau de char[] en paramètre E/S
    Par moulefrite dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/12/2008, 10h07
  3. Problème procédure avec paramètres
    Par slouma_b_h dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/11/2008, 11h48
  4. Problème procédure avec paramètres
    Par Aizen64 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/06/2007, 10h40
  5. [xsl] Problème hyperlink avec paramètre
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/12/2005, 08h46

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