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.
Gracias.