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

C Discussion :

Execution d'un script shell depuis un code C


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Par d�faut Execution d'un script shell depuis un code C
    Je voudrais executer un script shell depuis un code C. Je passe par un fork et je fais un execvp dans le fils. Pour un programme ca marche sans probleme mais pas moyen d'executer un script meme basique.
    Voici mon code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    if ((pid = fork()) == 0) 
    	{
    		char* argv[2];				
    		argv[0] = "./script.sh";		
    		argv[1] = NULL;				
                    execvp("./script.sh", argv);	
    	}
    mon script fais juste un echo reussi.
    EDIT : L'erreur renvoy� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Xlib: unexpected async reply (sequence 0x17e4)!
    a terme mon script utilisera des iptables
    Merci de votre aide.

  2. #2
    Membre �m�rite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par d�faut
    Euh, qui te donne le message d'erreur ?


    Parcqu'avec �a, �a marche:
    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
    #include <stdio.h>
    #include <sys/types.h>
    #include <unistd.h>
     
     
    int main(void)
    {
        int pid;
        if ((pid = fork()) == 0) 
        {
            char* argv[2];              
            argv[0] = "./script.sh";        
            argv[1] = NULL;             
            execvp("./script.sh", argv);   
        } else {
           printf("Father (pid:%d)\n",pid);
        }
        return 0;
    }
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    #!/bin/sh
    echo "Message a deux francs"
    Rq: le script est 'executable' (chmod +x).

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Par d�faut
    L'erreur m'est donn�e par le terminal.
    J'ai essayer ton code dans un programme a part et ca marche sans probleme.
    Si j'execute ton code (essai) depuis mon programme principal il m'affiche le pid du pere mais n'excute pas le script. Si je remplace "mon" execvp par le tien dans le code principal j'ai toujours la meme erreur.
    Je vais essayer de voir dans le reste du programme mais tout marche bien si je commente le execvp ou si mets autre chose qu'un script.

  4. #4
    Membre �m�rite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par d�faut
    Euh, comment es-tu sur qu'il n'execute pas ton script ? Essaie de mettre un "touch tmp/toto" dedans et vois si te fichier est cree/update (la date). C'est peut-etre juste de stdout du script qui est ferme et c'est peut-etre pour ca que Xlib se plaint.

    Essaie peut-etre aussi de mettre des chemins absolus au script.

  5. #5
    Membre exp�riment� Avatar de Pikwik
    Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2006
    Messages
    237
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 237
    Par d�faut
    Petite id�e simple
    Tu demandes d'executer un script .sh mais dis tu avec quel programme l'interpreter ?

    je pensais � une commande du type :
    "/bin/sh .script.sh" au lieu du "script.sh"

    Bon apr�s c'est juste une id�e...

  6. #6
    Expert confirm�
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activit� : Software Engineer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par d�faut
    Citation Envoy� par Pikwik
    Petite id�e simple
    Tu demandes d'executer un script .sh mais dis tu avec quel programme l'interpreter ?

    je pensais � une commande du type :
    "/bin/sh .script.sh" au lieu du "script.sh"

    Bon apr�s c'est juste une id�e...
    Si son script est bien fait, il aura un
    !#/bin/sh

    Au debut de son script.

  7. #7
    Membre exp�riment� Avatar de Pikwik
    Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2006
    Messages
    237
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 237
    Par d�faut
    Je restais sur l'id�e (l'ayant lu dans je nais plus quel forum), qu'il �tait pr�f�rable de pr�ciser avec quel interpreteur on veut executer le script, car l'execution d'un script automatiquement est soumis � certains param�trages.

Discussions similaires

  1. [PHP 5.4] executer script shell depuis page php
    Par tintin3158 dans le forum Langage
    R�ponses: 0
    Dernier message: 18/07/2013, 11h29
  2. Executer un script Python depuis un code C++
    Par Niak74 dans le forum C++
    R�ponses: 4
    Dernier message: 02/02/2011, 10h19
  3. R�ponses: 1
    Dernier message: 15/02/2009, 07h45
  4. R�ponses: 3
    Dernier message: 31/07/2006, 15h07
  5. Exécution d'un script shell
    Par Manu0086 dans le forum Linux
    R�ponses: 8
    Dernier message: 15/06/2004, 16h31

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