[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]Hola, Me imagino que en cualquier libro sobre redes de Linux...yo francamente no me acuerdo donde lo aprendi, fue hace varios a#os. La idea es esta. inetd fue creado precisamente porque es bastante rollo hacer un servidor de red, ademas de para ahorrar recursos en la maquina (tienes un solo programa corriendo que esta escuchando a todos los sockets, en vez de varios demonios). Con un demonio tradicional, tienes que: 1. Programar todo lo del Socket 2. Si quieres servir a varios clientes, hacer multithreading o fork()ear 3. Tener alguna forma de detectar si el demonio se cae y reiniciarlo en dado caso 4. (alguna otra idea?) En el caso de inetd, lo unico que haces es que tu programa lea de stdin y escriba a stdout. inetd se encarga de todo lo anterior solito. Claro que algunas cosas se dificultan (como por ejemplo, averiguar la direccion IP del cliente) pero por lo general estas cosas no son tan problematicas como el rollo de un demonio. La desventaja principal de usar inetd, es que cada vez que se hace una conexion, se levanta un nuevo proceso. En un servidor que este muy ocupado, es mucho mas eficiente usar multithreading. Tambien, en algunos casos (por ejemplo sshd, el demonio del Secure Shell) el tiempo de arranque del demonio puede ser largo (sshd tiene que generar llaves cada vez que arranca) por lo que puede no ser tan eficiente. Como decia antes, muchos programas pueden arrancarse de ambas formas, ya sea con un switch de linea de comando para indicar que estan arrancando por inetd (o al reves, que estan arrancando como demonio) o por una opcion de configuracion. Ejemplos de esto son el antedicho sshd y el httpd de Apache. En fin, espero que esto te ayude. Saludos, -Mario. Luis Manuel Lepe Vizcaíno wrote: > > A ver.. esto no me lo sabía.. ¿donde encuentro información al respecto? > porque me gustaría poder saber bien la diferencia para poder programarlos.. > Gracias > > > -----Original Message----- > > From: Mario Camou [SMTP:mcamou en null net] > > Sent: Thursday, July 01, 1999 1:34 AM > > To: Cristian Othon Martinez Vera > > Cc: Isidro Miranda Aquino 24/05; linux-admin en nuclecu unam mx > > Subject: Re: solicito ayuda > > > > Cristian Othon Martinez Vera wrote: > > > > > > On Tue, 29 Jun 1999, Isidro Miranda Aquino 24/05 wrote: > > > > > > > hola a todos > > > > > > > > tengo un prblema con linux soy un estudiante de sistemas > > computacionales > > > > y necesito instalar un demonio en una maquina es para un proyecto que > > > > necesito entregar el programa por sissolo si funciona pero al tratar > > de > > > > ponerlo como un demonio no lo inicializa ya modifique los archivos del > > > > inetd.conf y el services las lineas que pusimos son las siguientes > > > > > > > > > > > > inetd.conf > > > > ara stream tcp nowait root /root servii > > > > > > > > > > > > services > > > > ara 9999/tcp > > > > > > Probaste antes correr tu programa en background? (servii &) Como estas > > > usando un puerto no privilegiado, si lo ejecutas en background, deberia > > de > > > funcionar. > > > > > > Cuando veas que de verdad funciona, integralo a inetd.conf > > > > > > ara stream tcp nowait root /root/servii > > > > > > Saludos > > > > No, acuérdate que la diferencia entre un demonio normal y uno que corre > > por inetd, es que el demonio normal tiene que abrir y cerrar sus propios > > Sockets, mientras que si corre por inetd, éste se encarga de manejar los > > sockets y sólo le pasa al programa la conexión al socket por medio de > > standard input y standard output. Si corres un programa de inetd en > > background no va a pasar nada. Por eso Apache y otros que pueden correr > > tanto por inetd como como demonios tienen que tener alguna opcion de > > linea de comando (p.ej., "sshd -i") o en el archivo de configuracion, > > que les diga si estan corriendo por inetd. > > > > Tu demonio esta programado para inetd? Creo que tu linea de inetd.conf > > esta mal, donde dice "/root" tienes que poner el path completo del > > ejecutable (a menos que esté en /usr/sbin) y luego repetirlo porque eso > > es lo que le va a pasar inetd al programa en la linea de comando > > (acuerdate que en C el argv[0] es el nombre del programa). Asi, tu linea > > quedaria (asumiendo que tu demonio este en /usr/local/sbin/servii): > > > > ara stream tcp nowait root /usr/local/sbin/servii servii > > > > Espero que esto te sea util, > > -Mario.