C/Visual C - Ejecutables en c

 
Vista:

Ejecutables en c

Publicado por Rene (4 intervenciones) el 08/12/2006 16:34:06
Alguien sabrá cuál es la forma correcta de mandar ejecutar otro programa ya compilado desde otro en C? He estado utilizando la funcion execv pero no consigo hacer que del programa "hijo" se regrese al anterior...

Les agardezco de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ejecutables en c

Publicado por Fran (122 intervenciones) el 08/12/2006 18:54:17
Emmm. segura q tas poniendo bien los wait y q no tas retornando del padre no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutables en c

Publicado por Fran (122 intervenciones) el 08/12/2006 19:12:27
Me acorde de otra cosa! Execv executa rutas absolutas seguidas del nombre, por ejemplo si keres hacer
ls -l -a
el primer argumento de execv es /bin/ls y el segundo es un char ** con ls -l -a... recomiendo usar mejor execvp que ejecuta el path...
suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutables en c

Publicado por Tom (619 intervenciones) el 11/12/2006 15:31:01
exec() y familia, reemplazan tu proceso por otro nuevo. Esto quiere decir que nunca "regresarás" al proceso padre, porque ya no existe (hay que leer el man ;-)).

Mejor usa system().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

estas equivocado

Publicado por Fran (122 intervenciones) el 11/12/2006 18:19:22
si haces fork() creas un hijo, ahi tns q poner exec()... el padre no morira, solo el hijo lo hara
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estas equivocado

Publicado por Tom (619 intervenciones) el 12/12/2006 14:36:44
Chico, no sé cómo será en windows, pero en unix:

System Calls exec(2)

NAME
exec, execl, execv, execle, execve, execlp, execvp - execute
a file

SYNOPSIS
#include <unistd.h>

int execl(const char *path, const char *arg0, ...,
const char *argn, char * /*NULL*/);

int execv(const char *path, char *const argv[]);

int execle(const char *path,char *const arg0[], ... ,
const char *argn, char * /*NULL*/, char *const envp[]);

int execve (const char *path, char *const argv[]
char *const envp[]);

int execlp (const char *file, const char *arg0, ...,
const char *argn, char * /*NULL*/);

int execvp (const char *file, char *const argv[]);

DESCRIPTION
Each of the functions in the exec family overlays a new pro-
cess image on an old process. The new process image is con-
structed from an ordinary, executable file. This file is
either an executable object file, or a file of data for an
interpreter. __There can be no return from a successful call
to one of these functions because the calling process image
is overlaid by the new process image__.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

no estas leyendo

Publicado por Fran (122 intervenciones) el 13/12/2006 00:18:40
si, o sea, reemplaza la imagen de memoria, pero lo q no estas leyendo es lo important de mi correccion... si vos creas un hijo a traves de fork() y ejecutas exec() en el hijo, el hijo muere NO! el padre quien seguira viviendo tranquilamente! tengo ejemplos de esto, de hecho, si esto no fuese posible el SO no andaria! (cada proceso hijo de init jamas moriria) eso es lo q dije, q me corregste de manera equivocada, y q te volvi a decir q de vuelta me estas corrigiend cualquiera, lee antes de responder
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar