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 :

Utiliser ligne de commande Linux dans un programme C


Sujet :

C

  1. #41
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    EAGAIN n'est pas une valeur de retour de read() ; c'est un code d'erreur retourné dans errno.

  2. #42
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Exact.
    read va renvoyer 0 en cas de souci, puis positionner errno à la valeur kivabien.
    Cf. le man :
    Citation Envoyé par man 2 read
    On error, -1 is returned, and errno is set appropriately.

  3. #43
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    ok j'avais pas compris ça.. je vais voir comment utiliser errno..

    Edit: bon du coup j'ai fait ça qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    do{
         ret=read(fd, chaine, 300);
         if(ret>0)
         affichage->append(QString(chaine));
     }
     while(errno!=EAGAIN);
    Mais du coup qu'est ce que ça apporte par rapport au fait de tester while(ret>0)
    Stay a while and listen...

  4. #44
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Salut,

    alors je reviens vers vous pour vous remercier de m'avoir aidé sur ce sujet

    J'ai appris à me servir d'un pipe dans la console et aussi à l'exploiter depuis un programme en C ^^ Il me reste pas mal de choses à voir sur ce sujet mais j'ai désormais un bon point de départ.

    A la première page, nous avons aussi parlé de l'option d'empêcher le démon de "forker" -f .. du coup j'ai paramétré le script de démarrage avec -f Lo pour exploiter la sortie standard.
    Et ça fonctionne parfaitement bien.. Du coup dans Qt, j'ai pu utiliser la classe QProcess pour lancer le démon et surveiller sa sortie standard ! Il a fallu tout de même paramétrer les droits de l'utilisateur avec sudo visudo pour modifier le fichier sudoers pour que mon programme puisse lui-même lancer le démon, d'autant qu'il utilise le port 162.

    Voilà du coup j'ai le choix entre deux façons de faire

    Prochaine étape, comprendre comment créer et utiliser des socket ^^
    Stay a while and listen...

  5. #45
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    Le mieux c'est execve + fork + pipe

    Enfin quand j'ai dev un shell il y a longtemps j'ai fait ça

    http://www.developpez.net/forums/d70...ork-pipe-exec/

    ou encore

    http://sparis.free.fr/Cours_LInfo/OS...cessusUnix.pdf

    Bon courage

  6. #46
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Un merci tardif pour ton message (que je viens à peine de voir ) ..
    Stay a while and listen...

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Réponses: 12
    Dernier message: 03/12/2010, 16h08
  2. Utiliser des commandes linux dans un shell
    Par Info_76 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/03/2008, 12h03
  3. [Système] Commande Linux dans Programme PHP
    Par makohsarah dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2007, 12h36
  4. utilisation des commandes shell dans un programme C
    Par rasgueados dans le forum Linux
    Réponses: 15
    Dernier message: 03/08/2006, 17h25
  5. Réponses: 2
    Dernier message: 24/06/2003, 20h31

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