Hirdetés
- Honor Magic6 Pro - kör közepén számok
- Bemutatkozott a Poco X7 és X7 Pro
- Xiaomi 15 - kicsi telefon nagy energiával
- iPhone topik
- Szerkesztett és makrofotók mobillal
- Kompatibilis lett az Android Quick Share és az Apple AirDrop
- Redmi Note 9S néven érkezett meg a Redmi Note 9 Pro
- Xiaomi 14 - párátlanul jó lehetne
- Samsung Galaxy A54 - türelemjáték
- Okosóra és okoskiegészítő topik
-
Mobilarena

Új hozzászólás Aktív témák
-
emitter
őstag
válasz
emitter
#1323
üzenetére
najó elég béna voltam, nem godnolkoztam
szóval müxik, de nem teljesen úgy ahogy én akarom:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/time.h>
int
input_timeout (int filedes, unsigned int seconds)
{
fd_set set;
struct timeval timeout;
/* Initialize the file descriptor set. */
FD_ZERO (&set);
FD_SET (filedes, &set);
/* Initialize the timeout data structure. */
timeout.tv_sec = seconds;
timeout.tv_usec = 0;
// select returns 0 if timeout, 1 if input available, -1 if error.
return select (FD_SETSIZE,
&set, NULL, NULL,
&timeout);
}
int
main (void)
{
int i=0;
while(i<10)
{
if( input_timeout(STDIN_FILENO, 1) )
{
printf(''gomnyomas tortent '');
printf(''%d\n'',i);
i++;
}
else
{
printf(''%d\n'',i);
i++;
}
}
return 0;
}
ugyanis pl. 3 mp-ig várok, ok, számol 3-ig
aztán nyomok 1 entert, ekkor azt kéne kiírnia, h ''gomnyomas tortent 4''
majd kéne tovább számolnia, nem?
ehelyett ezt írja:
gomnyomas tortent 4
gomnyomas tortent 5
gomnyomas tortent 6
gomnyomas tortent 7
gomnyomas tortent 8
gomnyomas tortent 9
és mindezt 1 pillanat alatt, mintha már nem számolna a timeout
mit rontottam el
-
Jester01
veterán
válasz
emitter
#1323
üzenetére
azt mondtad h szedjem ki a temp_failure-t, hát kiszedtem, de így meg a select ha jól látom, nem is hívódik meg sehol
Persze, mert azt is kiszedted
Talán azt hagyd benne, a return-nel egyetemben.
return select (FD_SETSIZE, &set, NULL, NULL, &timeout));
Már most nem tudom hogyan magyarázzam, ha az elõzõt nem értetted.
Na még egy próba.
Nézzük onnan, hogy mit szeretnél:
1. Ha a felhasználó megnyom egy gombot, akkor arra reagálni akarsz.
2. Másodpercenként kiírni az idõt.
3. Közben nem terhelni a processzort.
A 3. pont miatt meg kell mondani az operációs rendszernek, hogy az 1. és 2. események bekövetkeztekor fusson a progi. Ezt például a select függvénnyel lehet, ami azt tudja, hogy figyel tetszõleges számú fájlleírót megadott ideig. Billentyûleütés akkor van, ha a stdin fájlból van mit olvasni. Ezt szépen meg lehet adni a select-nek. Sajnos azt viszont nem tudja, hogy másodpercenként térjen vissza akkor is ha nincs billentyûleütés, csak várakozási idõt lehet neki megadni. Ezért a 2. pontot kicsit át kell fogalmazni, mégpedig úgy, hogy nem azt mondod, hogy másodpercenként, hanem azt, hogy a következõ másodpercig. Ezt pedig úgy csinálod, hogy minden frissítésnél illetve a select meghívása elõtt lekéred az idõt (a gettimeofday függvénnyel, mert kell a pontosság!) és a timeout értéket ebbõl számolod, értelemszerûen: timeout = elõzõ frissítés + 1mp - aktuális idõ.
A select visszatérési értéke elárulja, hogy az 1. vagy a 2. feltétel következett-e be, vagyis a felhasználó megnyomott egy gombot (ekkor getch() és eseménykezelés) vagy pedig a várakozási idõ járt le (ekkor idõ frissítése kell.).
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Debrecen és környéke adok-veszek-beszélgetek
- Ne már! Drágább lesz a GPU a memóriapánik miatt?
- NBA és kosárlabda topic
- Autós topik látogatók beszélgetős, offolós topikja
- LEGO klub
- Építő/felújító topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Linux kezdőknek
- Senki sem töröl ennél jobban
- Futás, futópályák
- További aktív témák...
- DELL latitude 5410 Tartós Üzleti Laptop 14" -70% i5-10210U 4Mag 8Gb 256GB SSD FHD IPS
- DELL latitude 5410 Tartós Üzleti Laptop 14" -70% i5-8365U 4Mag 8Gb 256GB SSD FHD IPS
- Apple iPhone 13 Pro Max 128GB,Újszerű,Dobozával,12 hónap garanciával
- Apple iPhone 14 128GB,Újszerű,Dobozával,12 hónap garanciával
- Samsung Galaxy Tab S6 Lite 64GB,Átlagos,Dobozával,12 hónap garanciával
- Dell Optiplex MT/SFF 3040, 3050, 3060, 3070, 5070, 7060/ Hp ProDesk /SZÁMLA- GARANCIA
- HIBÁTLAN iPhone 13 mini 128GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3842, 100% Akkumulátor
- Logitech G513 Carbon Tactile DE (3) (ELKELT)
- Telefon felváráslás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- BESZÁMÍTÁS! ASUS H510M i3 10105F 16GB DDR4 512GB SSD GTX 1050Ti 4GB Thermaltake V3 fekete NBase 650W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest





