Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Sistemas Operativos] Problema procesos hijos
Autor Mensaje
thewithin Sin conexión
Profesor del Modulo A
Ingeniero
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 335
Agradecimientos dados: 50
Agradecimientos: 24 en 11 posts
Registro en: Jul 2008
Mensaje: #1
[Sistemas Operativos] Problema procesos hijos Trabajo practico Sistemas Operativos
Hola! estoy arreglando el tp de so y me surgio un problema inesperado de ultimo momento. Para los que esten al tanto, tengo un servidor de archivos, que genera un proceso hijo con fork por cada descarga que un cliente quiere realizar, el problema es el siguiente, cuando la descarga termina, y el proceso hijo termina, no desaparece, si vamos a otra consola y escribimos ps -fa veremos que el hijo sigue en el sistema, aunque ya no hace nada y no va a volver a hacer NADA. El problema es que los hijos se acumulan y cuando son muchos hacen que el sistema se vuelva inestable, queria saber si hay alguna forma de hacer que cuando el proceso hijo termina de hacer sus cosas, que muera o algo asi, asi no se me acumulan y el sistema no se cae. Muchas Gracias!!!!!
13-12-2008 02:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Imakuni Sin conexión
Presidente del CEIT
Boxes tastes like mush
********

Ing. en Sistemas
Facultad Regional Córdoba

Mensajes: 7.021
Agradecimientos dados: 124
Agradecimientos: 129 en 85 posts
Registro en: Jul 2008
Mensaje: #2
Re: [Sistemas Operativos] Problema procesos hijos
Tenes que llamar a la funcion Exit(codigo de salida) envez de return. Bah, por las dudas, llama a exit y despues a return, pero supuestamente nunca deberia llegar al return

De todas formas, te lo prueban con 3 gnutella..... quilombo no vas a tener.

Saludos!!!!
13-12-2008 03:54
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
thewithin Sin conexión
Profesor del Modulo A
Ingeniero
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 335
Agradecimientos dados: 50
Agradecimientos: 24 en 11 posts
Registro en: Jul 2008
Mensaje: #3
Re: [Sistemas Operativos] Problema procesos hijos
Es raro, porque al final del codigo del proceso hijo, tengo un exit, y sin embargo si tiras un ps, vas a ver todos los hijos ahi cargados, no se que hacer para que mueran.
13-12-2008 13:09
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.980
Agradecimientos dados: 9
Agradecimientos: 195 en 75 posts
Registro en: Apr 2008
Mensaje: #4
Re: [Sistemas Operativos] Problema procesos hijos
Con exit() se muere.

Revisá tu código a ver si llega a esa línea.
13-12-2008 14:34
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Imakuni Sin conexión
Presidente del CEIT
Boxes tastes like mush
********

Ing. en Sistemas
Facultad Regional Córdoba

Mensajes: 7.021
Agradecimientos dados: 124
Agradecimientos: 129 en 85 posts
Registro en: Jul 2008
Mensaje: #5
Re: [Sistemas Operativos] Problema procesos hijos
Usa el gdb y antes de ejecutarlo, hace break <num linea>.

Si no lo sabes usar, te resumo:

compilas con: gcc -g blabla.c
despues haces gdb --args a.out <argumentos si es que tiene>
te aparece un prompt loco.

tecleas break <numero de linea en donde este el exit ()>, enter.

y luego ..... creo que R de run o C de continue... eso mejor fijate por internet :P, con eso ejecuta el programa
Cuando llegue a la linea, corta. Si tiene algun error, podes chequear las variables en el momento.....

Para continuar despues del break, tocas C.
Despues tenes un comando List que te muestra las proximas 10 lineas, y millones de cosas mas copadsa (como breakpoints de una sola pasada, o que corta cada X veces (copado para bucles), watchpoints, etc.....)

Te recomiendo que busques GCC Debuger o algo asi, a nosotros nos simplifico bastante la parte de linux en el tp.

Y si das despues de las vacas....el DDD, que (supuestamente, ya que este no lo use) te visualiza las estructuras de datos estaticas y dinamicas, sabiendo si estas perdiendo punteros, liberando bien la memoria, etc.....


Saludos, y espero que te sirva!!!!
13-12-2008 14:57
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.980
Agradecimientos dados: 9
Agradecimientos: 195 en 75 posts
Registro en: Apr 2008
Mensaje: #6
Re: [Sistemas Operativos] Problema procesos hijos
Nota al margen: Acordate que no tienen que quedar archivos descargando una vez que cerras el servidor.
13-12-2008 15:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
fedex86 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 6
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: May 2008
Mensaje: #7
Re: [Sistemas Operativos] Problema procesos hijos
estas capturando la señal que manda el proceso hijo al padre para saber que termino??, sino haces esto va a quedar zombie ( que por lo que entendi del man ese estado nada mas ni menos esd la señal que le manda al padre sin capturarla)
lo podes ahcer de varias maneras una con wait, pero esa funcion es bloqueante con lo que el proceso padre no seguiria ejecutando, por lo que no te sirve yo para eso lo que hice fue capturarla con signal e ignorarla, con lo cual solo tenes que al principio del main llamar a la funcion signal de esta manera signal(SIGCHLD,SIG_IGN); la primera es la señal que manda el proceso hijo y el segundo parametro le decis que la ignore por que lo unico que tenes que hacer para que desaparesca el proceso hijo es capturarla.
saludos

-Born to be wild-
16-12-2008 12:43
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
audvloid Sin conexión
Campeon del cubo Rubik
Sin estado :(
****

Ing. en Sistemas


Mensajes: 146
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Apr 2008
Mensaje: #8
Re: [Sistemas Operativos] Problema procesos hijos
fedex86 escribió:estas capturando la señal que manda el proceso hijo al padre para saber que termino??, sino haces esto va a quedar zombie ( que por lo que entendi del man ese estado nada mas ni menos esd la señal que le manda al padre sin capturarla)
lo podes ahcer de varias maneras una con wait, pero esa funcion es bloqueante con lo que el proceso padre no seguiria ejecutando, por lo que no te sirve yo para eso lo que hice fue capturarla con signal e ignorarla, con lo cual solo tenes que al principio del main llamar a la funcion signal de esta manera signal(SIGCHLD,SIG_IGN); la primera es la señal que manda el proceso hijo y el segundo parametro le decis que la ignore por que lo unico que tenes que hacer para que desaparesca el proceso hijo es capturarla.
saludos



Eso es exactamente lo que hay que hacer, nosotros teníamos el mismo problema, y nuestro ayudante nos dijo eso, después todo solucionado
17-12-2008 17:35
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)