Ejecutar un programa en C desde otro programa en C

Iniciado por mapers, 5 Abril 2011, 09:34 AM

0 Miembros y 2 Visitantes están viendo este tema.

mapers

Buenas señores necesito de su ayuda.No se si  existira alguna funcion en l aque pueda ejecutar un programa desde otro programa........o multiprogramas a la vez gracias de antemano ..............
Encontre por google  la funcion ShellExecute().... pero no se como se usa .......o existe otro metodo...........

Akai

Depende del sistema operativo en el que estés.

En linux tienes la opción de hacer un fork y luego un exec para cambiar el hijo por el otro programa.

En windows imagino que sería algo similar, pero no se exactamente qué método se usa.

gxg

#2
Si haces system("c:\programa.exe"); ejecutaras el programa, pero tiene una gran pega, que hasta que no termine de ejecutarse no seguira a la siguiente linea de codigo.

Existe una solucion muy fea para esto pero que te funcionara, creas una acceso directo al programa, por ejemplo programa.lnk y si haces system("c:\programa.lnk"); se ejecutara el programa y aunque tenga un bucle infinito seguida a la siguiente linea de codigo.

Saberuneko

Cita de: gxg en  5 Abril 2011, 14:01 PM
Si haces system("c:\programa.exe"); ejecutaras el programa, pero tiene una gran pega, que hasta que no termine de ejecutarse no seguira a la siguiente linea de codigo.

Eso solo vale para windows. Pero funciona.

NOTA: Para hacer uso de la funcion "system()" necesitaras incluír la librería stdlib.h

mapers

#4
No en realidad a mi no me funciona con esa funcion .......... no hay otra manera de poder hacerlo............ osea me refiero a que cuando  lo ejecute salga en otra ventana y no en la misma  .... si me entienden maso menos verdad .... que no se vea en la misma ventana si no que abra otra ...algo asi como un START /D y en esa ventana nueva que se corra el programa

dooque

#5
En Linux es como dice Akai, fork() + exec().

En Windows podes usar la llamada al sistema CreateProcess():
http://msdn.microsoft.com/en-us/library/ms682425%28v=vs.85%29.aspx
O tambien alguna de la familia de funciones spawn():
http://msdn.microsoft.com/en-us/library/20y988d2%28v=vs.71%29.aspx
y hay algunas mas por ahi como usar popen() por ejemplo.

Nota: Todas las formas de crear un proceso es windows terminan en la llamada al sistema CreateProcess().

PD: Aca un conjunto de funciones en windows para el manejo de hilos y procesos:
http://msdn.microsoft.com/en-us/library/ms684847%28v=VS.85%29.aspx

Saludos!
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.  -- Kernighan

mapers

#6
mira tengo esta ruta me dijeron que as asi se podia pero nada

Código (cpp) [Seleccionar]

system("START G:\ archivos \Laboratorio \archivos_1cursos.exe ");


Esa es mi ruta :D a ver como lo pondrias tu...........
pero me dijeron  que con :
Código (cpp) [Seleccionar]

WinExec("C:\\Program Files\\MyApp", ...)   

tambien se podria pero no se que parametros colocarle para que me ejecute la cmd asi tipo Start

d(-_-)b

Cita de: mapers en  5 Abril 2011, 09:34 AM
Buenas señores necesito de su ayuda.No se si  existira alguna funcion en l aque pueda ejecutar un programa desde otro programa........o multiprogramas a la vez gracias de antemano ..............
Encontre por google  la funcion ShellExecute().... pero no se como se usa .......o existe otro metodo...........

http://foro.elhacker.net/programacion_cc/no_consigo_hacer_funcionar_a_shellexecute-t323107.0.html;msg1596606#msg1596606

saludos...
Max 400; caracteres restantes: 366

mapers

Y para mi intruccion como seria con el ShellExecute...........

d(-_-)b

Max 400; caracteres restantes: 366