/*
+--------------------+
| SHELL CRONOMETRADO |
+--------------------+
Este programa ejecuta otro programa cronomentrando el tiempo
empleado en la ejecución del segundo. El programa a ejecutar puede
ser un programa ejecutable con extensión .EXE o .COM, un fichero por
lotes .BAT o un comando interno del DOS como dir. Además dicho
programa se puede ejecutar con argumentos.
El main() que está entre comentarios es la versión que toma
los datos desde la línea de órdenes del sistema operativo en vez de
preguntar por ellos con las funciones de entrada estándar como se
hace en el main() actual.
*/
#include <process.h> /* system () */
#include <stdio.h> /* puts (), printf () */
#include <time.h> /* time_t, difftime (), time () */
#include <string.h> /* strcat () */
#include <conio.h> /* getch () */
/*
void main (int argc, char **argv);
*/
void main (void);
void ejecutar (char *);
/*
void main (int argc, char **argv)
{
if (argc == 1)
puts ("\nEste programa cronometra el tiempo empleado al ejecutar
el programa\npasado como argumento.\n");
else
{
int cont;
char nombre_programa_a_ejecutar[256] = { 0 };
for (cont = 1; cont < argc; cont++)
{
if (*nombre_programa_a_ejecutar)
strcat (nombre_programa_a_ejecutar, " ");
strcat (nombre_programa_a_ejecutar, *(argv+cont));
}
ejecutar (nombre_programa_a_ejecutar);
}
}
*/
void main (void)
{
char nombre_programa_a_ejecutar[256] = { 0 };
printf ("\nIntroduzca nombre de programa a ejecutar: ");
do
{
gets (nombre_programa_a_ejecutar);
} while (!*nombre_programa_a_ejecutar);
ejecutar (nombre_programa_a_ejecutar);
getch ();
}
void ejecutar (char *nombre_programa)
{
int valor_devuelto;
time_t tiempo1, tiempo2;
tiempo1 = time (NULL);
valor_devuelto = system (nombre_programa);
tiempo2 = time (NULL);
if (valor_devuelto == -1)
printf ("\nError al intentar ejecutar el programa \"%s\".",
nombre_programa);
else
{
int horas, minutos, segundos;
unsigned segundos_totales = (unsigned) difftime (tiempo2,
tiempo1);
segundos = segundos_totales % 60;
minutos = (segundos_totales / 60) % 60;
horas = (segundos_totales / 3600) % 24;
printf ("\nTiempo empleado en la ejecución del programa "
"\"%s\":\n", nombre_programa);
if (horas)
printf ("%d hor%s ", horas, horas == 1 ? "a" : "as");
if (horas || minutos)
printf ("%d minut%s ", minutos, minutos == 1 ? "o" : "os");
printf ("%d segund%s", segundos, segundos == 1 ? "o" : "os");
}
puts ("");
}