[ESTE METODO COMPRUEBA QUE SE ACTUALICE ONLINESIG.DAT en menos de 2 minutos para ver si emule.exe etá en ejecución]
Bueno, pos aunque la idea de rodrigo fue lo primero que me vino en mente, tb taba el caso de que se colgara dando error y saliendo la ventanita esa para aceptar (emule colgado PERO EL PROCESO sigue).
Para evitar eso, he tenido que echar mano de un programita externo de las pstools (pskill.exe) que termina procesos a lo "bestia".
Venga, no me enrollo más, aqui ta el código:
#include <stdio.h>
int copiador(char[], char[]);
int comparador(char[], char[]);
void main()
{
int bucle;
int bandera;
while(0==0)
{
system("cls");
printf("\n\n\tCOPIANDO *onlinesig.dat* a --> *firma.dat* Por favor, espere...");
copiador("onlinesig.dat", "firma.dat");
sleep(1000);
bandera=1; //Se supone que serán iguales
for(bucle=0; bucle<120 && bandera==1; bucle++)
{
system("cls");
printf("\n\n\t*firma.dat* creado correctamente");
printf("\n\n\tComparando ONLINESIG.DAT y FIRMA.DAT. %d seg restantes", 120-bucle);
if(comparador("onlinesig.dat", "firma.dat")==1)
printf("\n\n\tPor el momento son iguales...");
else
bandera=0;
sleep(1000);
}
system("cls");
printf ("\n*Onlinesig.dat* y *firma.dat son* %s ", bandera==1 ? "iguales" : "distintos");
if(bandera==1)
{system("pskill emule");
printf("\n\n\n\n\tEmule se ha colgado. Ejecutando emule de nuevo...");
system("start emule.exe");
printf("\n\n\tEmule CARGADO con éxito. Dentro de media hora se volverá a comprobar...");
}
else
printf("\n\n\tEmule FUNCIONA PERFECTAMENTE. Dentro de media hora se volverá a comprobar...");
sleep(1800000);
}
}
int copiador(char original[], char copia[])
{
int marca=-1;
FILE *pf1, pf2; / punteros a fichero de entrada y fichero de
salida resp. */
if ((pf1 = fopen (original, "rb")) == NULL)
marca=-1;
else if ((pf2 = fopen (copia, "wb")) == NULL)
{
marca=-1;
fclose (pf1);
}
else
{
int ch1, ch2;
while(!feof(pf1))
{
ch1=fgetc(pf1);
if(!feof(pf1))
fputc(ch1, pf2);
}
fclose (pf1);
fclose (pf2);
marca=1;
}
return(marca);
}
int comparador(char nombre_fichero_1[], char nombre_fichero_2[])
{
int marca;
FILE *pf1, pf2; / punteros a fichero de entrada y fichero de
salida resp. */
if ((pf1 = fopen (nombre_fichero_1, "rb")) == NULL)
marca=-1;
else if ((pf2 = fopen (nombre_fichero_2, "rb")) == NULL)
{
marca=-1;
fclose (pf1);
}
else
{
int ch1, ch2;
while ((ch1 = fgetc (pf1)) == (ch2 = fgetc (pf2)) && ch1
!= EOF) ;
if(feof(pf1) && feof (pf2))
marca=1;
else
marca=0;
fclose (pf1);
fclose (pf2);
}
return(marca);
}
Salu2