[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [OT] Ejecutando Programa desde C



usa 
   system(char *comando);
ejecuta comado y se espera a que termine.

pero si te quieres hacer bolas con los fork() entonces ponle más o menos
así:

  int pid;
  char nombre_programa[] = "nombre del prog a ejecutar",
       parametro[] = "el parametro";
  ...
  pid = fork();
  if(pid != 0) {
     wait(NULL); 
      /* si quieres que se ejecuten al mismo tiempo le quitas el wait()
*/
      /* código de tu programa (proceso padre) */
   }
   else
      /* proceso hijo */
      execl(nombre_programa, nombre_programa, parametro, NULL);

Cuando llamas a fork() crea un nuevo proceso que es una copia del
proceso padre, pero por azares de la multiprogramación después de
ejecutarse no puedes saber que proceso es el que se esta ejecutando, asi
que el buen fork regresa 0 cuando estas en el proceso hijo, y el PID
(Process ID) del hijo cuando estas en el padre (por eso el if).
Cuando lanzas un programa con exec digamos que si se descarga el proceso
de donde lo estas llamando y se sustituye por el programa que se va a
ejecutar (a eso se le llama cambio de contexto), por eso lo ejecutas en
el código del proceso hijo.
aaaghhh!!
Fácil no?
Vuélvele a dar una leída al Linux Programmers Guide en la parte de
procesos.

Pedro Arturo Góngora Luna

Federico Javier Fernandez wrote:
> 
> ¿Cómo puedo ejecutar un programa desde C? Estuve investigando las llamadas a
> fork y a exec en todas sus variantes, pero no he podido lograr mucho. Lo único
> que pido es ejecutar un programa con un solo parámetro al estilo "programa
> parametro". ¿Cuándo ejecuto un exec se descarga el proceso actual? Me gustaría
> seguir corriendo los dos procesos, o solamente el nuevo hasta que termine y
> luego volver al antiguo proceso. fork solamente me devulve un PID pero no me
> dice nada acerca de archivos ni nada de eso.
> 
> Estuve leyendo el "Linux Programmers Guide" pero no encontré nada de eso.
> 
>                                                                 Saludos!

-- 
Para desuscribirse, mande correo a: ayuda-unsubscribe en linux org mx
Para comandos adicionales, envíelo a: ayuda-help en linux org mx



[Hilos de Discusión] [Fecha] [Tema] [Autor]