/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Agregar sleep a codigo

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
xuxomovil



Registrado: 18 Oct 2007
Mensajes: 4

MensajePublicado: 26/10/2007 9:03 am
Título: Agregar sleep a codigo

Saludos. He creado este interprete de comandos para que puede ejecutar programas de /bin/ y de el directorio actual:

#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

main()
{
int pid,status;
int esta=0; /* Esta variable nos indica si &*/
/* se encuentra en el comando introducido*/
int posicion; /*En esta variable se almacena la posicion del &*/
int i; /*Contador*/
char programa[20];
char bin[20];
printf("\pedro: ");
gets(programa);
if(strlen(programa)!=0) /*Por si el usuario pulsa enter directamente*/
{
for(i=0;i<=(strlen(programa)-1);i++)
{
if(programa[i]=='&')
{
esta=1;
posicion=i;
}
}
/*Siempre busca el & al final de la cadena*/

if(esta)
programa[posicion]='\0';
}
while(strcmp(programa,"salir")!=0)
{
switch(pid=fork()){
case -1: /*Gestion del error*/
exit(1);
break;
case 0: /*Proceso hijo*/
strcpy(bin,"./");
strcat(bin,programa);
execl(bin,programa,0);
strcpy(bin,"/bin/");
strcat(bin,programa);
execl(bin,programa,0);
printf("\nComando o nombre de archivo incorrecto\n");
exit(1);
break;
default: /*Proceso padre*/

/*Si existe background, el proceso padre*/
/*no esperara al hijo*/

if (!esta) wait(&status);
break;
}
esta=0;
printf("\pedro: ");
gets(programa);
fflush(stdin);
if(strlen(programa)!=0) /*Por si el usuario no introduce nada*/
{
for(i=0;i<=(strlen(programa)-1);i++)
{
if(programa[i]=='&')
{
esta=1;
posicion=i;
}
}
/*Siempre busca el & al final de la cadena*/

if(esta)
programa[posicion]='\0';
}
}
printf("\nFin de la ejecucion\n");
return 0;
}/*fin de main*/


Ahora bien, el programa creo que funciona, porque ejecuta en background y en modo normal (si pudieseis probarlo me hariais un favor). Lo que no se hacer es que quiero que me reconozca tambien si pongo sleep 10& para poder ver que esta ejecutandose en background. Este codigo no incluye los parametros (no quiero que los incluya) pero solo quiero que me reconozca sleep 10. Indicadme si es posible como hacerlo, gracias.
Volver arriba
xuxomovil



Registrado: 18 Oct 2007
Mensajes: 4

MensajePublicado: 28/10/2007 3:56 pm
Título: sfd

Ya me lo he resuelto solo. Gracias
Volver arriba
v0x1



Registrado: 20 Oct 2007
Mensajes: 13

MensajePublicado: 28/10/2007 9:00 pm
Título:

Si posteas la solucion tal vez puedas ayudar a otros que se les presente el mismo problema. Saludos Wink
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com