Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   C/C++ (http://www.forosdelweb.com/f96/)
-   -   Ciclo infinito ... Hasta precionar una tecla (http://www.forosdelweb.com/f96/ciclo-infinito-hasta-precionar-tecla-531750/)

Fhenix666 08/11/2007 17:35

Ciclo infinito ... Hasta precionar una tecla
 
Hola ke tall...

quiero hacer un programa en c estandar, sobre linux que este realizando modificaciones en un archivo de texto indefinidamente en un ciclo infinito hasta ke yo presione una tecla.

El procedimiento es el siguiente:

tengo dos archivos: Arch01 Arch02... en los que escribiré datos (tomemos 0s y 1s como ejemplo) en dos columnas la columna 1 es el dato y la 2 es "código de error". los mismos datos en el otro archivo.

en si son 4 operaciones que se estaran repitiendo indefinidamente. y entre cada operacion debe poderse generar la interrupcion............el paro del ciclo al precionar una tecla...

............posible Interrupción.
1. grabar en el archivo 1 el dato. (columna 1)
............posible Interrupción.
2. grabar en el archivo 1 el código de error. (columna 2)
............posible Interrupción.
3. grabar en el archivo 2 el dato. (columna 1)
............posible Interrupción.
4. grabar en el archivo 2 el código de error. (Columna 2)
............posible Interrupción.


no se como hacer un ciclo infinito ,,, que este circulando hasta que pecione una tecla el usuario...AYUDA

mariano_donati 08/11/2007 18:29

Re: Ciclo infinito ... Hasta precionar una tecla
 
Yo lo haría de la siguiente forma:

#define TRUE 1
#define FALSE 0

...

char caracter;

printf ( "Va a comenzar un proceso. Desea continuar? S - N: " ) ;
scanf ( "%s", &caracter );

while ( TRUE )
{
if ( caracter == 'N' )
{
break;
}
else
{
printf ( "Se ejecutaria la instruccion 1\n" );
}

printf ( "Desea continuar con el proceso iniciado? S - N: " );
scanf ( "%s", &caracter );

if ( caracter == 'N' )
{
break;
}
else
{
printf ( "Se ejecutaria la instruccion 2\n" );
}

printf ( "Desea continuar con el proceso iniciado? S - N: " );
scanf ("%s", &caracter );

}

Espero que te sirva. Saludos!.

Fhenix666 08/11/2007 20:31

Re: Ciclo infinito ... Hasta precionar una tecla
 
Mil gracias por el aporte,, es buenoooo....

pero la idea es que no evalué por medio de preguntas,,,,
estoy tratando de hacerlo con procesos hijos... ke un proceso hijo aga las operaciones mientras el padre espera .... a que preciones una tecla perooo creooo ke no me ayuda mucho estooo... por que sigo sin lograr que se siga haciendo las operaciones solitas....

necesito una rutina que este indefinidamente ciclada... hata ke precione una tecla... no ete pregunte si deseo continuar............ es decir el usuario solo interactua para detener el proceso con un solo entreeeeerrr o otra tecla.

mariano_donati 08/11/2007 22:00

Re: Ciclo infinito ... Hasta precionar una tecla
 
Ahora estoy entendiendo un poco más. No sirve de mucho el código que te deje. Dejame pensarlo un rato, soy novato en esto de C, pero me interesa el desafío que propone lograr hacer eso. Después te digo a ver que salió.

Fhenix666 08/11/2007 23:51

Re: Ciclo infinito ... Hasta precionar una tecla
 
Que biennn...mariano_donati...

No pude con los procesos hijossss....

miraaa logre estoooo pero aun mo me gusta como keda...Manejando Señalesss

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

int car = 0;

void manejo(int a)
{
/////////////////////pero esto no me funciona como kierooo
---- car = getchar();
---- printf("car %d",car);
---- if(car == 1)
---- {
-------- printf("\nFin del Programa...");
---------- car=1;
---------}
----- else
----- car=0;

//////////////////si dejo solo
//car=1;
////////////si funciona se salee y yaaaaaaa pero kiero tener la opcion de decidir si me salgo o continuo.........

}

int main(void)
{
----- int l = 0;
----- signal(SIGINT, manejo);

----- while( car != 1 )
----- {

----- printf("%d.\n", l);
----- ++l;
----- l = (l + 1) % 60000;
----- }
}

MaxExtreme 09/11/2007 08:58

Re: Ciclo infinito ... Hasta precionar una tecla
 
Varias cosillas:

POSIX no es parte del estándar de C.
Tienes una etiqueta CODE para poner código.
¿Por qué escribes arrastrando la última letra de cada palabra?

m4xp0wer 09/11/2007 09:28

Re: Ciclo infinito ... Hasta precionar una tecla
 
El tema sería que el proceso hijo fuera el que escribe en el fichero. Lo que podías hacer es que el padre simplemente cree el hijo y espere un enter. Al recibir el enter, envíe una señal de usuario (SIGUSR1 por ejemplo) al proceso hijo. La rutina debería ser algo de este estilo
void rsSIGUSR1()
{fin=1;}
y la comprobación en el bucle de escritura while (!fin)

erick_arcini 09/11/2007 16:55

Re: Ciclo infinito ... Hasta precionar una tecla
 
Cita:

Iniciado por MaxExtreme (Mensaje 2181885)
...
¿Por qué escribes arrastrando la última letra de cada palabra?

Es que no leíste bien el post :arriba:

MaxExtreme 10/11/2007 06:04

Re: Ciclo infinito ... Hasta precionar una tecla
 
Cita:

Iniciado por erick_arcini (Mensaje 2182412)
Es que no leíste bien el post :arriba:

Touché ;)


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

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.