Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > C / C++ > Ejecutar programa con funcion intdos() en DOS
-Foros de debate

C / C++
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Ejecutar programa con funcion intdos() en DOS
Enviado por Alberto Sung el día 19 de marzo de 2008

Hola, estoy intentando cargar y ejecutar archivos .COM desde otro programa, SIN utilizar el EXEC explicitamente, solo llamadas al sistema de DOS ( Funcion INTDOS).

El problema es cuando trato de enviar un BLOQUE DE PARAMETROS para pasarle parametros al .COM que se ejecutará.

Ejemplo: c:\ejecutar nombre_comando [parametros]

Este es el codigo pero se queda sin responder:

// ejecutar.c
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <sys\types.h>

int main(int argc, char near *argv[ ])
{
int len, i, j, retorna, tam;

union REGS registros;
char f1[20] = "0000000000000000000\0"; // FCB1 en blanco
char f2[20] = "0000000000000000000\0";

// bloque de parametros para pasar al BX
struct parametros {
short int segmento;
char* lineacomando;
char* fcb1;
char* fcb2;

} par;

char *cmd; // linea de comando

cmd[0] = (char) strlen(argv[2]);
strcpy(&cmd[1],argv[2]);
strcat(&cmd[1],"\0");

// estableciendo el bloque de parametros
par.segmento = 0;
par.lineacomando = cmd;
par.fcb1 = f1;
par.fcb2 = f2;

registros.h.ah = 0x4b;
registros.h.al = 0x00;
registros.x.dx = (unsigned) argv[1];
registros.x.bx = (unsigned int) &par;

retorna = intdos(&registros, &registros);
if (!(registros.x.cflag ? retorna : 0))
{ printf("CARRY FLAG IS CLEAR\n"); };

printf("Comando terminado: %s", argv[2]);
return 0;
}

 

Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network