¿Por qué escribir () al programa de salida de la tubería cuando se escribe en la salida estándar de tubo?

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

  •  22-09-2019
  •  | 
  •  

Pregunta

Tengo una aplicación de servidor que escribe a un popen ( "myCommand", "w") descriptor de archivo en un hilo separado y si el comando pasaron a popen () produce ninguna salida a stdout o stderr, los mis aplicación se cierra . Sin embargo, esto es sólo un problema cuando mi aplicación de servidor se invoca a través de inetd, si utilicé ssh para iniciar el servidor, que no tiene este problema.

Del mismo modo, cuando mi aplicación de servidor lee en un popen ( "myCommand2", "r") descriptor de archivo en un hilo separado y si el comando pasó a popen () produce ninguna salida a stderr (entrada estándar va a mi pipa ), la aplicación se cierra. De nuevo, esto sólo se produce con invocación inetd, no Invocación ssh.

¿Fue útil?

Solución

debe cerrar todas las FDS existido antes del proceso abierto el tubo, y luego hacer i / o redirección. Eso es porque si inetd, se ejecuta el proceso como un demonio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top