Forum Programmation.shell Rediriger stdin en Bash

Posté par  .
Étiquettes : aucune
0
25
nov.
2004
Salut,

Je suis en train de programmer un lanceur d'applications en C, et l'une d'entre elle (un serveur), que j'utilise tous les jours, fonctionne ainsi au démarrage :

1) elle affiche des infos sur stdout (normal)
2) elle affiche d'autres infos sur stdin (moins normal, ou alors il y a une subtilité qui m'échappe)

Mon lanceur fonctionne ainsi : il ouvre un flux avec popen("mon_app", "r"), autrement dit il lit stdout et je perds la moitié des infos.

Connaissez vous la commande bash ad hoc qui me redirigerait tout vers stdout (y compris ce que le prog m'affiche sur stdin) ?

Merci d'avance
Franck
  • # Heu

    Posté par  (site web personnel) . Évalué à 2.

    T'es sur pour stdin, c'est pas plutot stderr ?
    • [^] # Re: Heu

      Posté par  . Évalué à 1.

      Sûr et certain, d'où mon désarroi :-)

      fprintf(stdin,"Server on host %s is ready and listening on %s: ..."


      J'ai hélas besoin de ce vieux programme...
      • [^] # Re: Heu

        Posté par  . Évalué à 1.

        puisque tu as les sources de ton vieux prog, pourquoi tu le modifies pas ??
        • [^] # Re: Heu

          Posté par  . Évalué à 2.

          Tout à fait, je pourrais, mais il est truffé de trucs du genre, et je me demandais s'il n'y avait pas plus simple que de le recompiler...
          • [^] # Re: Heu

            Posté par  . Évalué à 2.

            Je suis en train de regarder la source plus avant, et j'ai trouvé comment il fonctionne :

            freopen("/dev/tty","wt",stdin);
            /* écriture dans stdin */
            ...
            /* release tty */
            freopen("/dev/null","rt",stdin);


            Je vois pas trop l'intérêt mais bon...
            • [^] # Re: Heu

              Posté par  . Évalué à 2.

              Ok je vois l'"intérêt"... le programme ferme stdin puis le redirige de manière à forcer l'écriture sur la console. Donc si je comprends bien, mon problème n'a pas de solution ??
      • [^] # Re: Heu

        Posté par  . Évalué à 4.

        je n'ai jamais vu fprintf(stdin ... de ma vie , mais une recherche sur google montre que ca existe. Mais je me demande bien a quoi ca sert.

        bon il me semble que ta question est :Connaissez vous la commande bash ad hoc qui me redirigerait tout vers stdout ?

        stdin =0
        stdout = 1
        stderr = 2

        donc il faut faire

        ton_prog 0>&1
        • [^] # Re: Heu

          Posté par  (site web personnel) . Évalué à 2.

          un programme ou une fonction récursive qui traiterait sa propre sortie un certain nombre de fois (fini ou pas).
          Ca permet peut-etre aussi de refiler des données aux fils lors d'un fork; non?
  • # peut-être ...

    Posté par  (site web personnel) . Évalué à 4.

    mon_prog 0>&1

    ou quelque chose comme ça devrait le faire.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.