Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Exe solo abre un exe en vez que los 2.

Estas en el tema de Exe solo abre un exe en vez que los 2. en el foro de C/C++ en Foros del Web. Hola que tal, tengo un inconveniente en el siguiente codigo; el tema es que al unir los 2 exes en uno solo, cuando abro el ...
  #1 (permalink)  
Antiguo 16/09/2010, 13:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 47
Antigüedad: 15 años, 6 meses
Puntos: 0
Exe solo abre un exe en vez que los 2.

Hola que tal, tengo un inconveniente en el siguiente codigo; el tema es que al unir los 2 exes en uno solo, cuando abro el resultante, solo ejecuta el primer exe que fue unido.
Es decir si como fichero1, pongo: jaja.exe y como fichero2: jeje.exe, al abrir el exe creado por mi, solo ejecuta jaja.exe y no los dos.
Dejo a continuacion el codigo aver quien tiene idea a que se debe:


Código:
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

using namespace std;



char* escribir(string archivo1)
{
    char * buffer;
    ifstream lectura1(archivo1.c_str(), ifstream::binary);
    lectura1.seekg(0, ios::end);
    int tamanio1 = lectura1.tellg();
    lectura1.seekg(0);


    buffer = new char [tamanio1];
    lectura1.read(buffer,tamanio1);
    lectura1.close();

    return buffer;
}


int getTamanio(string archivo1)
{
    ifstream lectura1(archivo1.c_str(), ifstream::binary);
    lectura1.seekg(0, ios::end);
    int tamanio1 = lectura1.tellg();
    lectura1.seekg(0);
    lectura1.close();
    return tamanio1;

}

void crearFichero(string archivo1, char* buffer1, char* buffer2, int tamanio1, int tamanio2){
  ofstream escritura1(archivo1.c_str(), ofstream::binary);
  escritura1.write(buffer1, tamanio1);
  escritura1.write(buffer2, tamanio2);
  escritura1.close();
}

int main()
{
    string ruta;
    string ruta2;
    string destino1;
    string destino2;


    cout << "Ingresar ruta fichero1: " << endl;
    cin >> ruta;
    char* buffer = escribir(ruta);


    cout << "Ingresar ruta fichero2: " << endl;
    cin >> ruta2;
    char* buffer2 = escribir(ruta2);

    cout << "Ingresar ruta destino: " << endl;
    cin >> destino1;
    crearFichero(destino1, buffer, buffer2, getTamanio(ruta), getTamanio(ruta2));



delete[] buffer;
delete[] buffer2;


    return 0;
}
Gracias
  #2 (permalink)  
Antiguo 16/09/2010, 19:27
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Exe solo abre un exe en vez que los 2.

Los exe no funcionana asi. Solo se ejecuta el primero. Asi funciona windows!
  #3 (permalink)  
Antiguo 17/09/2010, 05:30
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Exe solo abre un exe en vez que los 2.

No sé si he entendido bien lo que quieres hacer. ¿Se trata de coger dos ejecutables y ponerlos, uno a continuación del otro, tal cual, en un solo archivo, y luego ejecutar el nuevo archivo para que se ejecute un programa a continuación del otro? Si es así, no puedes, ni en Windows ni (que yo sepa) en ningún otro sistema. La razón es simple: Al crear el ejecutable, el compilador genera un código de inicialización y otro de terminación (básicamente, llamadas al sistema para reservar recursos al comenzar, y llamadas al sistema para liberar esos recursos al finalizar). por lo que al ejecutarse los procesos de terminación del primer ejecutable se devolverá el control al SO y no se hará nada con el segundo ejecutable. Si lo que quieres es ejecutar un programa y, a continuación, otro, de manera automática, tendrás que hacerlo mediante un archivo de proceso por lotes, o script, o como quiera que se llame (depende del SO que utilices).
  #4 (permalink)  
Antiguo 17/09/2010, 09:58
 
Fecha de Ingreso: julio-2010
Mensajes: 153
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Exe solo abre un exe en vez que los 2.

o también puedes crear un nuevo ejecutable y guardar los otros ejecutables en variables y cuando lo ejecutes copie los ejecutables en el disco y luego los ejecute o algo parecido

Etiquetas: exe
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:09.