BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

Borland c++ 3.11

forber

alguien sabe que librebria y que tengo q escribir para hacer una llamada a otro exe.

Yo habia puesto de libreria e puesto la de (process.h)

execlp (c:\...","");

xo no ace lo q le pido,

Alguien que ya lo haya hecho, plisss

Salu2

Este tema está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
Axelko

No se como va en Borland C++, pero supongo q la llamada será igual q en Unix. La sintaxis es:

int execlp(char *fich, char *arg0, char *arg1, ..., char *argn, char *null)

Es decir, q si quieres ejecutar el fichero programa.exe pasandole como argumento -h debes poner:

execlp("programa.exe" , "programa.exe" , "-h", NULL);

Espero q funcione igual en MsDos. Salu2.

🗨️ 2
forber

la pega es que int se suele utilizar para declarar variables de tipo entero... xo vamos lo probare, despues de todo que no quede que no lo probe.
Sallu2

🗨️ 1
Axelko

Emmm??? Creo q no has entendido... ese int significa que la función te devolverá un número indicando como fue la operación. Creo q concretamente devuelve el código de retorno del programa, que es 0 si todo va bien, y >0 si se produjo algún error. Así q bastará con hacer algo así:

int error;
error = execlp("programa.exe", "programa.exe", "-h", NULL);
if (error != 0) //se ha producido un error
{
//aquí el código para tratar el problema
}

Lofter

execlp

exec... functions (PROCESS.H)

Enable your program to load and run other files (child processes)

Use these execl... functions when you know how many separate arguments

you'll have:

Declaration:
int execl (char *path, char *arg0, ..., NULL);
int execle (char *path, char *arg0, ..., NULL, char **env);
int execlp (char *path, char *arg0, ...);
int execlpe(char *path, char *arg0, ..., NULL, char **env);

Use these execv... functions when you don't know in advance how many

separate arguments you will have:

Declaration:
int execv (char *path, char *argv[]);
int execve (char *path, char *argv[], char **env);
int execvp (char *path, char *argv[]);
int execvpe(char *path, char *argv[], char **env);

Remarks:

When an exec... call succeeds, the child process overlays the parent

process. There must be sufficient memory available for loading and executing

the child process.

The l, v, e, and p suffixes added to "exec" specify certain capabilities of

the exec... function.

Argument ³ What It Is/Does

path ³ File name of the called child process
argN ³ Argument pointer(s) passed as separate arguments
argv[N] ³ Argument pointer(s) passed as an array of pointers
env ³ Array of character pointers.

The exec... functions search for path using the

standard DOS search algorithm.

When an exec... function call is made, any open files remain open in the

child process.

Return Value:
On success, the functions do not return.
On error, the functions return -1 and set
errno to one of the following:
E2BIG Arg list too long
EACCES Permission denied
EMFILE Too many open files
ENOENT Path or file name not found
ENOEXEC Exec format error
ENOMEM Not enough core

🗨️ 3
forber

no si lo primero que hice fue preguntarle al profesor, el caso es que como es algo que aun no se ha dado, el hombre lo miro muy por encima y me dijo q mirara la ayuda y tal, xo claro yo lo e probao casi todo.
jeje
solo era a ver si alguien lo ha echo y me decia que tenia q decir exactamente

🗨️ 2
Lofter

Lo unico q desde el punto d vista d programacion estructurada llamar asi a un subproceso qda un pelin chapucero porq rompes el flujo del programa, pero algunas veces no hay mas remedio.

Respecto a tu profe posss q quieres q t diga... es un pelin torpe no? todavia si m dices la ayuda del vb q t deja como estabas pero la d borland q t cuenta con pelos y señales (d hecho cuando tengo q usar modo grafico copio la declaracion d modo q viene n la ayuda y ajusto la ruta del bgi xD)

🗨️ 1
Axelko

Pues la verdad es q eso de llamar a programas externos es bastante chapuza si. Soy de la misma opinión. Ni siquiera le veía demasiado sentido hacer esto en Unix teniendo en cuenta que podemos tener varios procesos, como para hacerlo en MsDos... xo weno, si lo necesita... Salu2.