Discussion:
Ejecucion de programas-Consulta
(demasiado antiguo para responder)
^_^
2003-12-10 16:54:59 UTC
Permalink
Sabe alguien si se puede y como seria para poder ejecutar desde un programa
escrito en c o c++ ejecutar otros programas bajo windows, ¿cual seria la
sentencia o mejor dicho la funcion? Estoy informandome sobre las funciones
system y execX, pero no doy con la tecla. Si alguien puede ayudar a este
principiante se lo estaria muy agradecido..

Un saludo y gracias a todos....
Fernando Arbeiza
2003-12-10 17:23:32 UTC
Permalink
Post by ^_^
Sabe alguien si se puede y como seria para poder ejecutar desde un programa
escrito en c o c++ ejecutar otros programas bajo windows, ¿cual seria la
sentencia o mejor dicho la funcion? Estoy informandome sobre las funciones
system y execX, pero no doy con la tecla. Si alguien puede ayudar a este
principiante se lo estaria muy agradecido..
System es la función que buscas. Si te va el inglés:

#include <stdlib.h>
int system(const char *string);

Description

[#2] If string is a null pointer, the system function
determines whether the host environment has a command
processor. If string is not a null pointer, the system
function passes the string pointed to by string to that
command processor to be executed in a manner which the
implementation shall document; this might then cause the
program calling system to behave in a non-conforming manner
or to terminate.

Vamos, que string debe ser el comando que quieras ejecutar.

Un saludo.
--
Fernando Arbeiza <URL: mailto:***@ono.com>
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
^_^
2003-12-11 09:04:45 UTC
Permalink
El problema q encuentro es q system solo me permite ejecutar 1 programa, y
la ejecucion del programa escrito por mi no finaliza hasta q no lo hace el
programa llamado por system, o sea, q si quiero q se ejecuten dos a la vez,
tiene q ejecutarse uno, cuando finalice sigue la ejecucion de mi programa y
llamaria al otro subprograma, y asi ...
No se si me he explicado bien.

Gracias de todas formas, un saludo
Post by Fernando Arbeiza
Post by ^_^
Sabe alguien si se puede y como seria para poder ejecutar desde un programa
escrito en c o c++ ejecutar otros programas bajo windows, ¿cual seria la
sentencia o mejor dicho la funcion? Estoy informandome sobre las funciones
system y execX, pero no doy con la tecla. Si alguien puede ayudar a este
principiante se lo estaria muy agradecido..
#include <stdlib.h>
int system(const char *string);
Description
[#2] If string is a null pointer, the system function
determines whether the host environment has a command
processor. If string is not a null pointer, the system
function passes the string pointed to by string to that
command processor to be executed in a manner which the
implementation shall document; this might then cause the
program calling system to behave in a non-conforming manner
or to terminate.
Vamos, que string debe ser el comando que quieras ejecutar.
Un saludo.
--
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
Fernando Arbeiza
2003-12-11 10:09:56 UTC
Permalink
Post by ^_^
El problema q encuentro es q system solo me permite ejecutar 1 programa, y
la ejecucion del programa escrito por mi no finaliza hasta q no lo hace el
programa llamado por system, o sea, q si quiero q se ejecuten dos a la vez,
tiene q ejecutarse uno, cuando finalice sigue la ejecucion de mi programa y
llamaria al otro subprograma, y asi ...
No se si me he explicado bien.
Ah, comprendo. Bueno, C no contempla el manejo de procesos. Para ello
tienes que utilizar los servicios del sistema operativo. Donde mejor lo
van a saber es en los grupos dedicados al sistema operativo concreto en
el que lo quieras utilizar. Por ejemplo:

<URL: news:es.comp.os.ms-windows.programacion>
<URL: news:es.comp.os.linux.programacion>

<OT POSIX>
Si utilizas un sistema POSIX, te puedo decir por donde empezar a
buscar. Para hacer lo que quieres necesitas las llamadas fork() y
la familia exec().

fork() te creará un proceso hijo exactamente igual al original, y
exec() te sustituirá ese nuevo proceso por el comando que quieras
ejecutar:

<URL: http://www.opengroup.org/onlinepubs/007904975/functions/fork.html>
<URL: http://www.opengroup.org/onlinepubs/007904975/functions/exec.html>

Sería algo así:

/******************/
#include <stdlib.h>
#include <unistd.h>

/* ... */

pid_t hijo;

hijo = fork()
if (hijo > 0) {
if (execl("comando", "argumento1", "argumento2", NULL) < 0) {
perror("Error en execl");
exit(EXIT_FAILURE);
}
} else if (hijo < 0) {
perror("Error en execl");
exit(EXIT_FAILURE);
}
/******************/

</OT POSIX>

Un saludo.
--
Fernando Arbeiza <URL: mailto:***@ono.com>
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
^_^
2003-12-12 10:02:57 UTC
Permalink
Muchas gracias por la respuesta, investigare lo q me dices.

Un saludo
Post by Fernando Arbeiza
Post by ^_^
El problema q encuentro es q system solo me permite ejecutar 1 programa, y
la ejecucion del programa escrito por mi no finaliza hasta q no lo hace el
programa llamado por system, o sea, q si quiero q se ejecuten dos a la vez,
tiene q ejecutarse uno, cuando finalice sigue la ejecucion de mi programa y
llamaria al otro subprograma, y asi ...
No se si me he explicado bien.
Ah, comprendo. Bueno, C no contempla el manejo de procesos. Para ello
tienes que utilizar los servicios del sistema operativo. Donde mejor lo
van a saber es en los grupos dedicados al sistema operativo concreto en
<URL: news:es.comp.os.ms-windows.programacion>
<URL: news:es.comp.os.linux.programacion>
<OT POSIX>
Si utilizas un sistema POSIX, te puedo decir por donde empezar a
buscar. Para hacer lo que quieres necesitas las llamadas fork() y
la familia exec().
fork() te creará un proceso hijo exactamente igual al original, y
exec() te sustituirá ese nuevo proceso por el comando que quieras
http://www.opengroup.org/onlinepubs/007904975/functions/fork.html>
http://www.opengroup.org/onlinepubs/007904975/functions/exec.html>
Post by Fernando Arbeiza
/******************/
#include <stdlib.h>
#include <unistd.h>
/* ... */
pid_t hijo;
hijo = fork()
if (hijo > 0) {
if (execl("comando", "argumento1", "argumento2", NULL) < 0) {
perror("Error en execl");
exit(EXIT_FAILURE);
}
} else if (hijo < 0) {
perror("Error en execl");
exit(EXIT_FAILURE);
}
/******************/
</OT POSIX>
Un saludo.
--
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
Loading...