ejecucion en background
Publicado por chemi (2 intervenciones) el 06/05/2005 11:45:44
Hola a todos, estoy haciendo una minishell en c para unix, y tengo que dar soporte a ejecucion en comandos en background, 2º plano, el funcionamiento es el siguiente, si por linea de comandos pongo un & es que tengo que ejcutar en segundo plano.
Para ejecutar cualquier comando lo que hago es crear un proceso hijo, y en el hijo llamo a la funcion execvp para ejecutar el comando en cuestion y en el codigo del padre, hago una llamada a wait para que espere a que su hijo termine. esto es para el caso en que no haya background,
cuando hay background, en vez de llamar a wait, llamo a waitpid(-1,&espera, WNOHANG), y para comanndos sencillos como ls y demas funciona bien, pero luego a partir de ahi el proceso padre siempre se queda esperando por lo que me ejecuta todos los demas comandos en background, y otro problema que me surge es que por ejemplo ejecuto la siguiente orden vi fichero & pero me trae el vi a primer plano, aunque realmente no puedo escribir porque esta en segundo (esto es lo mas raro que me hace),
alguien sabe como puedo hacer la ejecucion en segundo plano?
Para ejecutar cualquier comando lo que hago es crear un proceso hijo, y en el hijo llamo a la funcion execvp para ejecutar el comando en cuestion y en el codigo del padre, hago una llamada a wait para que espere a que su hijo termine. esto es para el caso en que no haya background,
cuando hay background, en vez de llamar a wait, llamo a waitpid(-1,&espera, WNOHANG), y para comanndos sencillos como ls y demas funciona bien, pero luego a partir de ahi el proceso padre siempre se queda esperando por lo que me ejecuta todos los demas comandos en background, y otro problema que me surge es que por ejemplo ejecuto la siguiente orden vi fichero & pero me trae el vi a primer plano, aunque realmente no puedo escribir porque esta en segundo (esto es lo mas raro que me hace),
alguien sabe como puedo hacer la ejecucion en segundo plano?
Valora esta pregunta
0