• Domingo 28 de Abril de 2024, 18:13

Autor Tema:  execve y background  (Leído 1090 veces)

Hispa18

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
execve y background
« en: Miércoles 21 de Abril de 2010, 14:28 »
0
Hola a todos, he de comentar que es mi primera visita y mi primer post en esta página que está realmente bien.
Necesito un poco de ayuda en cuanto al manejo de hilos en segundo plano.
Trabajo en C en un entorno linux y lo que tengo que hacer es crear un shell que recibe comandos y argumentos y tratarlos. Uno de los comandos que tengo que tratar es "background" y una serie de programas a continuacion.
Lo que tengo que hacer es que todos los programas que pase por la linea de comandos se ejecuten en segundo plano y solo lo puedo hacer con execve.

Ejemplo:
>>mi_shell background a.out b.out

Lo que tiene que hacer el programa es poner a.out y b.out en segundo plano, se supone que poniendo "&" funciona, pero no.
Hago un bucle para crear tantos hilos como argumentos tenga, y a cada hilo lo trato asi:

                                        shell[0] = "cat&";
               shell[1] = NULL;
               if(execve("/bin/cat",shell,NULL)==-1){
                  printf("ERROR, no se pudo ejecutar %sn",shell[0]);
                  kill(getpid(),9);
               }

No se si tengo que manejar alguna espera o alguna señal, no se me da nada bien el manejo de hilos (fork) en C, en Java si pero aquí no.  :hitcomp:

Gracias.