Question

J'ai un programme Perl POE bifurquer les enfants.

Les enfants, il est bifurquent faire l'exploitation forestière et telnets interactifs dans les appareils à distance. POE utilise STDOUT pour revenir en arrière jusqu'à la sortie du processus parent, mais pour une raison quelconque, il est de se perdre (ne va pas à l'écran ou à tous les fichiers).

Je théoriser que c'est parce que STDOUT est redirigé quelque part -. Je dois savoir où

Je l'ai utilisé (-t STDOUT) pour identifier que le STDOUT de l'enfant n'est pas un ATS.

J'ai également remis à zéro le STDOUT de l'enfant à celui du parent avant que l'enfant a été appelé -. Mais cette méthode semble éviter les gestionnaires d'événements de POE et décharges juste la sortie aux parents STDOUT

Q) Comment puis-je identifier quels sont les points STDOUT courant à donc je peux trouver où mes données va

Merci

Simon

Était-ce utile?

La solution 3

est en baisse à la POE :: Filtre :: Référence StdOut gestionnaire étant sortie envoyé par le processus enfant qui n'a pas été dans le format qu'il attendait.

Suppression du filtre - pourrait alors voir ce qu'il a été envoyé et cela m'a permis de corriger le problème

.

La question a été le processus de l'enfant vomissait le contenu de ses sous-processus stdout le long de la connexion socket au gestionnaire StdOut.

Simon

Autres conseils

Je fileno aide dans cette situation? Si un enfant est fermeture et la réouverture STDOUT, alors fileno(STDOUT) aurait une valeur différente chez l'enfant que chez le parent.

$ perldoc -f fileno
   fileno FILEHANDLE
           Returns the file descriptor for a filehandle, or undefined if
           the filehandle is not open.  This is mainly useful for
           constructing bitmaps for "select" and low-level POSIX tty-
           handling operations.  If FILEHANDLE is an expression, the value
           is taken as an indirect filehandle, generally its name.

           You can use this to find out whether two handles refer to the
           same underlying descriptor:

               if (fileno(THIS) == fileno(THAT)) {
                   print "THIS and THAT are dups\n";
               }

           (Filehandles connected to memory objects via new features of
           "open" may return undefined even though they are open.)

Si vos enfants en forme de fourche sont des programmes Perl aussi, vous pouvez « sélectionner STDOUT » et définissez $ | pour le marquer avant droit unbuffered toute exploitation forestière arrive.

Êtes-vous certain que ce n'est pas un problème de mise en mémoire tampon? Je ne suis pas familier avec POE, donc je ne sais pas comment vous enquêtez ou corriger, mais je pense qu'il vaut la peine de vérifier, au moins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top