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

Linux Discussion :

fork() + pipe stout


Sujet :

Linux

  1. #1
    Membre régulier
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Points : 113
    Points
    113
    Par défaut fork() + pipe stout
    Bonjour,
    http://paste.alacon.org/47854
    Ca fait des mois que j'essaye de faire marcher cela et que ca ne marche pas, ca deviens urgent.
    Je veux juste appeller en async le process ping (qui doit rester actif) et lire sa sortie chaque seconde.
    J'aimerai bien un coup de main

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 975
    Points : 221 711
    Points
    221 711
    Billets dans le blog
    131
    Par défaut
    Bonjour,

    Malheureusement, vous ne donnez pas beaucoup de détail. Notamment, je compile, mais je ne sais pas lancer le programme. Au deuxième essai (avec -h), cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ./main -h
    path=./main/
    priority: 0, average: 0, noscript: 0
    Ce qui ne correspond pas à ce que j'ai pu entrevoir du code.

    Aussi, je viens de voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strcat(argv[0], "/");
    printf("path=%s\n", argv[0]);
    Je suis suspicieux de la légalité de cela. Je considère que argv est en lecture seul.

    Pour déboguer un tel programme, je conseille strace.
    On voit que cela bloque sur le epoll_wait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    write(1, "priority: 0, average: 0, noscrip"..., 37priority: 0, average: 0, noscript: 0
    ) = 37
    newfstatat(AT_FDCWD, "up.sh", {st_mode=S_IFREG|0644, st_size=31, ...}, 0) = 0
    timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK) = 4
    timerfd_settime(4, 0, {it_interval={tv_sec=1, tv_nsec=0}, it_value={tv_sec=1, tv_nsec=0}}, NULL) = 0
    epoll_ctl(3, EPOLL_CTL_ADD, 4, {events=EPOLLIN|EPOLLET, data={u32=4, u64=4}}) = 0
    epoll_wait(3, [{events=EPOLLIN, data={u32=4, u64=4}}], 1024, -1) = 1
    epoll_wait(3,
    Mais je dis ça, je ne sais même pas si j'utilise correctement le programme...

  3. #3
    Membre régulier
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Points : 113
    Points
    113
    Par défaut
    Effectivement, c'est l'un des points qui est problématique. L'autre point été execlp() accepte std::string sans faire d'erreur mais ne le gére pas, j'ai donc du mettre c_str()

    Résolut, merci du temps que tu m'as consacré.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 975
    Points : 221 711
    Points
    221 711
    Billets dans le blog
    131
    Par défaut
    En effet, les appels système sont des API C, du coup, aucun des types C++ ne sont compatibles tels quels. Bizarre que le compilateur ne dit rien, mais sûrement parce que ça utilise une liste variable d'arguments.

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

Discussions similaires

  1. Client / serveur fork/pipe
    Par dragnyon dans le forum Réseau
    Réponses: 3
    Dernier message: 17/12/2021, 15h36
  2. Fork, pipe, exec
    Par shepounet dans le forum Linux
    Réponses: 2
    Dernier message: 21/03/2009, 15h08
  3. Réponses: 4
    Dernier message: 29/05/2008, 18h49
  4. Exercice en c sur les forks+Pipe+exec
    Par Elendhil dans le forum Linux
    Réponses: 6
    Dernier message: 07/11/2007, 20h32
  5. problème chat avec socket/fork/pipe
    Par cedricdd dans le forum Réseau
    Réponses: 10
    Dernier message: 08/03/2007, 15h56

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