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 :

exec bloquant avec php


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut exec bloquant avec php
    Bonjour à tous,

    j'utilise dans mon code C l'instruction execl pour l'exécution d'un script php.

    Je ne comprend pas pourquoi mais cette instruction "bloque". En effet, mon script C arrive à cette ligne et reste figé sans rentrer dans mon script php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    printf("test1");
    execl("/usr/bin/php","php","mail.php",NULL);
    printf("test2");
    Le résultat affiche bien test1 puis attend. Dans mon script php j'ai mit un "echo "je passe ici"" au tout début et apparement il ne reste même pas dans mon script.

    J'ai aussi essayé aec execlp("php","mail.php",NULL) et même résultat.

    Je me trouve bien, lors de l'exécution, dans le même dossier que mail.php.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Bonjour,

    La famille des fonctions exec() remplace le processus courant par le programme que tu veux lancer. Aucune chance, donc, de voir apparaître « test2 ». Tape Entrée pour vérifier si ton script est réellement bloqué ou pas.

    Le résultat affiche bien test1 puis attend. Dans mon script php j'ai mit un "echo "je passe ici"" au tout début et apparement il ne reste même pas dans mon script.
    Il ne reste pas ou il ne rentre pas ? Ton message « je passe ici » s'affiche ou pas ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut
    Merci pour ton aide.

    Il ne rentre pas...désolé faute de frappe.
    Mon message "je passe ici" ne s'affiche pas.

    J'ai tapé Entrée et le prompt dans la console descend. Donc apparemment le script n'est pas bloqué mais continue à tourner "dans le vide".

    EDIT: j'ai effectué l'exécution du script en console et le script se lance parfaitement donc le problème vient surement de ma comande execl mais je ne comprends toujours pas pourquoi

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Essaie déjà de mettre des retours à la ligne dans tous tes print, que ce soit dans le programme C comme dans le script PHP. Sinon, le message risque de rester dans le buffer et de ne jamais s'afficher. Ce serait dommage.

    Qu'entends-tu par « le prompt dans la console descend » ? Si c'est le curseur qui saute une ligne sans qu'il ne se passe rien, tu es toujours bloqué. Par contre, si c'est l'invite de saisie (le prompt) style « /home/toto $ » qui se réaffiche une ligne plus bas, ça veut dire que le programme a rendu la main depuis longtemps (ou s'est émancipé).

    Enfin, je viens de faire le test chez moi et ça fonctionne.

    Tu travailles sous quel système d'exploitation ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut
    J'ai ajouté des retours à la ligne à tous mes prints et rien ne change.

    Oui le curseur saute une ligne sans que rien ne se passe.
    Le prompt « /home/toto $ » ne se ré-affiche pas. Je suis obligé de faire un Ctrl+c.

    Je suis sous Ubuntu 9.10

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Alors, il faut nous donner le code entier : celui de ton programme C (toute la fonction), et le code PHP.

Discussions similaires

  1. sudo chown avec PHP exec ne fontionne pas
    Par mqxxou dans le forum Applications et environnements graphiques
    Réponses: 10
    Dernier message: 17/11/2012, 19h26
  2. Travailler avec PHP / Apache / MySQL
    Par R3iTt0R dans le forum Linux
    Réponses: 22
    Dernier message: 24/06/2004, 11h03
  3. [débutant] choix de postgre avec php / migration
    Par bilbon.S dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/03/2004, 14h05
  4. Création d'utilisateur sous PostgreSQL 7.3.2 avec PHP
    Par duongkhang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2003, 13h10

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