Pourquoi n'écrire () pour le programme de sortie de tuyau lorsque tuyau écrit à stdout?

StackOverflow https://stackoverflow.com/questions/1586795

  •  22-09-2019
  •  | 
  •  

Question

J'ai une application de serveur qui écrit dans un descripteur de fichier popen ( « myCommand », « w ») dans un thread séparé et si la commande passée à popen () se traduit par une sortie à stdout ou stderr, les mes sorties d'application . Cependant, ce n'est un problème lorsque mon application serveur a été invoqué par inetd, si je ssh pour lancer le serveur, il ne dispose pas de cette question.

De même, lorsque ma demande de serveur lit à partir d'un descripteur de fichier popen ( « myCommand2 », « r ») dans un fil séparé et si la commande passée à popen () aboutit à une sortie quelconque de stderr (stdin va ma pipe ), la sortie application. Encore une fois, cela se produit uniquement avec convoquant inetd, sans invocation ssh.

Était-ce utile?

La solution

vous devez fermer tous les existait fds du processus avant d'ouvrir le tuyau, puis faire i / o redirection. c'est parce que si inetd, le processus fonctionne comme un démon.

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