[ LUGOS ] se time in C

Marko Mlakar mare na security.eu.org
Tor Sep 29 19:44:40 CEST 1998


On Tue, Sep 29, 1998 at 09:30:12AM +0100, Damjan Zobo Cvetko wrote:
> Tnx vsem, k st pomagal..
> Zanima me , kera finkcija je ala kbhit
> tko, da pogruntas ce je bil key pressan?
> 
> Poggy nej bi nakak tole delu:
> zalaufa.. neki PrintFa, pol je pa treba v 10ih secih neki prtisnt
> vsako sec se narise "." in pol vsakic vprasa ane...
> Jest sem vajen C++ DOS programiranja ( se bl pa Pascal) in bi tkole to
> naredu
> if (kbhit()) ch=getc(stdin)
> neki tazga no
> Pol pa proggy ustrezn return nardi, da ga lohka pol z
> $? jem ponucam
> 
> help
> tnx
> -Z
> 

Sam sem zelo proti ncurses, kjer se to ne rabi, tole je en tak primer.
     #include <stdlib.h>
     #include <stdio.h>

     #include <termios.h>
     #include <string.h>

     static struct termios stored;

     void set_keypress(void)
     {
         struct termios new;

         tcgetattr(0,&stored);

         memcpy(&new,&stored,sizeof(struct termios));

         /* Disable canonical mode, and set buffer size to 1 byte */
         new.c_lflag &= (~ICANON);
         new.c_cc[VTIME] = 0;
         new.c_cc[VMIN] = 1;

         tcsetattr(0,TCSANOW,&new);
         return;
     }
     void reset_keypress(void)
     {
         tcsetattr(0,TCSANOW,&stored);
         return;
     }


S temle programckom das terminal v SINGLE-KEY mode. Kar pomen, da
getc() in podobni ne bojo cakali do \n ampak se bo zakljucil ob prvi
tipki. Ce zelis sedaj kbhit() narediti, je vse kar rabis
ena select() za stdin. Ce ugotovis da je pritisnjena, samo se spraznes
buffer z getc() in imas kar zelis.


p.s: drugace za taka vprasanja obstaja lugos-prog lista, ki je namenjnea
programiranju. (Mislim, da ni potrebe da obremenjues in floodas
mailboxe takim, ki jih to ne zanima)


						mare


-- 

                ==---------------------------------------==
                    Marko Mlakar : mare na security.eu.org
                ===-------------------------------------===
		PGP Public key: finger mare na security.eu.org

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3i

iQCVAwUBNhEciNuTtP0eHXw5AQEFCgQAhDojg7//HfrYGr2qB0gV57qNPJFjOyGI
azlhr5zlqrBY8yh2BHFeRoi68p98LKThzvn4VFcjy9BtBBNcFnLxb3u7Y9+doAtP
hWzPL/99fWaPivBteUdMdMLGXs/niSr+c413BMmp/rxXrZCblIoHOe0wAhPCdXFz
zMM4fJohWHw=
=fioj
-----END PGP SIGNATURE-----





Dodatne informacije o seznamu Starilist