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

Langage PHP Discussion :

Passer une variable à un programme en C via une page PHP


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 91
    Points
    91
    Par défaut Passer une variable à un programme en C via une page PHP
    Bonjour à tous,

    J'ai un problème PHP / C.

    1) j'ai un programme(exemple) en C que je lance (./test_superbe_programme) et qui tourne en tâche de fond (programme qui attend une "saisie" et qui l'encodage dans fichier) :
    Code C : 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
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
    	char saisie[300]="";
      FILE* fichier = NULL;
     
    	while(1){
     
        scanf("%s", saisie);
     
        fichier = fopen("test.txt", "a+");
     
        fprintf(fichier, "%s \n", saisie);
        fclose(fichier);
     
      }
        return 0;
     
    }
    Ce superbe programme fonctionne à merveille ... tant que je tape les saisies dans le terminal à partir du quel je l'ai lancé (ceci est mon problème 1).

    2) j'aimerai transmettre une donnée à mon programme en PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $variable="bonjour";
    //commande bien fait pour envoyer ma variable à mon programme C ... qui tourne déjà et qui attend bien sagement
     
    ?>
    Voici mon problème 2 en 1 (et même 3 en 1 mais cela sera pour plus tard)
    Donc en résumé mes problèmes sont :
    1) je dois modifier mon programme C pour qu'il attente un variable depuis une page PHP
    2) je dois mettre une commande en php pour transmettre une variable à mon programme C

    Merci pour votre aide.

  2. #2
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 793
    Points : 3 064
    Points
    3 064
    Par défaut
    Bonjour

    C'est quoi ton programme en php ? Une page Web ou un script local ?

    Si c'est une page Web et donc accessible par URL, ton programme en C n'aurait qu'à accéder à l'URL et recevoir une valeur en retour... Je n'ai plus fait de C depuis 20 ans aussi impossible de te donner une piste mais en gros, depuis C, tu fais un GET d'une URL et tu reçois donc une réponse, imaginons du code json qu'il te suffit alors de parser.

    Je pense donc ici à une approche type API rest.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 91
    Points
    91
    Par défaut
    J'ai posé la même question sur le forum C et on m'a parlé des Sokets.

    Après une petite recherche, j'ai trouvé un exemple :

    https://www.developpez.net/forums/d7...-c-client-php/

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 255
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 255
    Points : 8 548
    Points
    8 548
    Billets dans le blog
    17
    Par défaut
    Plus simple à mettre en place que les sockets, les "named pipes".

    Je n'ai pas de compilateur C dispo pour tester, juste un exemple en PHP, mais le principe est le même.

    Le named pipe est créé avec posix_mkfifo() ( https://php.net/posix-mkfifo ). En C c'est mkfifo().

    pipe-client.php : écrit de la data sur le named pipe "/tmp/my-named-pipe"

    pipe-server.php : s'exécute en boucle, lit la data sur "/tmp/my-named-pipe", et l'écrit sur pipe-server.out avec un "." intercalé après chaque caractère

    pipe-server.php :

    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
    <?php
     
    $pipe = '/tmp/my-named-pipe';
     
    posix_mkfifo($pipe, 0777); // Création du named pipe
     
    $fp = fopen($pipe, 'r'); // On va lire ce qui arrive dedans
     
    while (true) {
        $c = fread($fp, 1); // Caractère par caractère
        if ($c !== '') {
            file_put_contents(__DIR__ . '/pipe-server.out', $c . '.', FILE_APPEND);
            $now = date('Y-m-d H:i:s');
            echo "{$now} > data received... '{$c}'\r\n";
        }
    }
    pipe-client.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    $fp = fopen('/tmp/my-named-pipe', 'w');
     
    $buffer = <<<BUFFER
        Adipisicing in anim enim adipisicing ut nulla ut laborum deserunt.
        Nisi enim pariatur cillum aute.
        Sit esse aliqua sint id eu aliqua do reprehenderit.
        Dolor eiusmod in veniam in Lorem magna cupidatat incididunt est sit eu in ex excepteur.
        Esse irure dolore est est quis ut consectetur tempor in excepteur veniam.
        BUFFER;
     
    fwrite($fp, $buffer);

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/11/2021, 07h16
  2. Réponses: 3
    Dernier message: 25/02/2008, 09h14
  3. Réponses: 21
    Dernier message: 12/10/2007, 18h30
  4. Réponses: 1
    Dernier message: 22/06/2007, 15h40
  5. faire passer une variable d'une fct js à une page php
    Par harlock59 dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2005, 14h41

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