• Viernes 8 de Noviembre de 2024, 20:36

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Hispa18

Páginas: [1]
1
C/C++ / execve y background
« en: Miércoles 21 de Abril de 2010, 14:28 »
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.

2
C/C++ / execve y background
« en: Miércoles 21 de Abril de 2010, 14:26 »
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.

Páginas: [1]