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

Shell et commandes GNU Discussion :

Exécutable qui attend la touche entrée pour produire ses sorties


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut Exécutable qui attend la touche entrée pour produire ses sorties
    Bonjour,

    Je suis sous raspberry et j'ai un exécutable au comportement assez étrange.
    il est censé lire des valeurs de capteurs et faire cela tant qu'on ne tappe pas la touche entrée.
    Comme je veux lire en permanence, tout va bien.. jusque la
    Quand je le lance il affiche plein de trucs à l'écran, super, il y a, entre autres, des lignes que je veux
    donc je me lance dans un commande | grep cequejeveux
    sauf que la .. bizarre (pour moi en tout cas) cela ne fonctionne que si j'appuie sur entrée (et termine le programme)
    cmoment cela se fait il ?

    du coup ce que j'aurais besoin de nfaire en script c'est :
    lancer la commande et rediriger sa sortie écran dans un fichier (commande > log ne fonctionne pas plus que le grep)
    attendre 10secondes
    simuler un appuie sur la touche entrée
    cat file | grep cequejeveux

    pourriez-vous m'aider s'il vous plait ?
    merci !

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Bonjour

    Il faut que tu te mettes au clair sur les canaux et les redirections.
    le canal 0 est pour l'entrée standard.
    le canal 1 est pour la sortie standard.
    le canal 2 est pour la sortie d'erreurs standard.
    Les canaux 3 et plus sont libres d'utilisation.

    Quand tu fais "> log", tu sous-entends le canal 1 vers un fichier.

    Rien d'étonnant à ce que le grep attende la fin du premier logiciel avant de donner son propre résultat.

    Pour envoyer la touche entrée à ton logiciel, il faut donc que tu lui envoies un \n dans l'entrée standard.

    N'as-tu pas un exécutable qui lit de manière ponctuelle les valeurs ? Ce serait plus pratique pour faire ce que tu veux.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    et non malheureusement je ne dispose que ce gros tas de boue de programme mal ficelé
    ok en effet, bien expliqué comme ca, je comprends que dans tous les cas le programme attend sa fin pour rediriger sa sortie
    alors comment puis je faire pour le lancer 10 secondes seulement et rediriger sa sortie dans un fichier que je post traiterai ?

  4. #4
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    pardon mais je viens de faire un test simple
    un fichier hitenter.sh qui attend qu'on appuie sur la touche entrée pour finir ..

    #!/bin/sh
    echo "avant"
    read var
    echo "apres"

    et bien quand je fais ./hitenter.sh | grep avant .. il y arrive bien même si j'appuie pas sur la touche entrée !



    alors pourquoi mon con d'exécutable ne veut pas "libérer" ses sorties avant ??

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Quand tu parles d'exécutable, tu parles de fichier binaire?

    Pour la méthode, je reprends ton exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ cat /tmp/tente
    #!/bin/sh
    echo "avant"
    read var
    echo "apres"
    $ /tmp/tente < <(sleep 10; echo -e "\n")
    avant
    apres
    (il s'est bien écoulé 10 secondes entre avant et après)

    Le premier '<' est une redirection vers l'entrée (canal 0) et le second avec parenthèses '<( )' est une substitution de processus.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut JOLI
    faut que je révise on dirait

    c'est la classe par contre ca me met ca moi :
    ./hitenter.sh < <(sleep 10;echo -e "\n")
    Missing name for redirect.


    oui oui mon exe est un fichier binaire

  7. #7
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    ca marche en bash
    pas en sh apparemment ..

  8. #8
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Hum. Pourquoi te restreindre à sh? Utilise bash sur ta Raspberry.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  9. #9
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut MERCI
    ca marche d'enfer en utilisant bash donc
    je ne savais pas que sh était moins bien ...
    un grand merci !!!

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    sh est plus vieux et considéré comme commun à tous. Donc la portabilité d'un script sh doit être meilleur qu'un bash. Mais en confort, bash est mieux. Après les goûts de chacun interviennent entre bash, ksh, csh, dash...
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/05/2008, 11h08
  2. touche 'entré' pour submit, liste deroulante
    Par Azilal dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 10/04/2008, 16h23
  3. Touche Entrée pour valider
    Par sly60 dans le forum Débuter
    Réponses: 2
    Dernier message: 30/01/2008, 17h17
  4. Réponses: 10
    Dernier message: 03/01/2008, 00h02
  5. [WebForms]Comment utiliser la touche entrée pour valider un formulaire ?
    Par yonialhadeff dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 10/05/2006, 13h29

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