Hola buenas
Estoy haciendo un programa en c++ para un archivo bat y necesito pasarle variables al archivo por lotes, como hago para establecer %ERRORLEVEL%??
Hace mucho que busco información pero no encuentro nada :-[
int main() {
return 20; //El valor que retornes de la funcion principal es el indicado para el ERRORLEVEL, generalemnte siempre es return 0; cuando todo salio bien
}
(http://i.imgur.com/EkSw8af.png) (https://imgur.com/EkSw8af)
No está funcionando
array.exe
int main(){
return 20;
}
main.bat
@echo off
array
echo %ERRORLEVEL%
pause
En lugar de devolver 20 devuelve -1073741819 :-X
Posiblemente tu programa no este terminando de manera correcta, posiblemente tienes algun bufferoverflow y el programa termina de forma inesperada y sin control de error. ejemplo
PROGAMA TOTALMENTE MAL:
#include<string.h>
void funcion() {
char arreglo[20];
memset(arreglo,'A',100); //BUFFER OVERFLOW !!
}
int main() {
funcion();
return 1;
}
Ejemplo llamando a la funcion vulnerable.
(http://i.imgur.com/CrtXFo6.png) (https://imgur.com/CrtXFo6)
Ejemplo SIN llamar a la funcion vulnerable
(http://i.imgur.com/9E4sCfn.png) (https://imgur.com/9E4sCfn)
El programa anterior es totalemente vulnerable APROPOSITO, termina en la funcion(), sin volver a la funcion principal.
Revisa tu codigo posiblemente tienes un BUG, si manejas memoria dinamica asegurate de no estar trabajando sobre apuntadores ya liberados, si trabajas con funciones como strcpy o similares segurate de cambiarlas por sus metodos seguros,
Asegurate de no salirte de los Limites del arreglo, algo muy comun es que si tienes un arreglo[10], y en el codigo realizas algo como for (i= 0; i <= 10, i++), en este caso estarias escribiendo UN SOLO byte fuera de la direccion del arreglo lo cual causaria un error de buffer overflow conocido como OFF by ONE
Saludos
El código que uso es el que puse arriba
Int main y return 20 :-\
No puede ser posible, algo esta mal.
- No estes ejecutando el ejecutable que compilaste. Intenta borrar el exe y compilar de nuevo.
- Puede ser algun problema de compilador que estes usando.
Esto es lo que tengo, y estoy utilizando CodeBlocks 13.12
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
int main(int argc,char *argv[])
{
//const char* str = argv[1];
//char pout = str[atoi(argv[2])];
//printf("hola");
return 20;
}