Hirdetés
- Olcsó vs. drága egér: melyiknél érzed meg igazán a különbséget?
- Itt a Microsoft szörnyprocesszora, ami 132 maggal tarolhatja le a felhőt
- Az Inteltől – nem csak az Intelnek
- Alice Recoque-kal mutatná meg Európa hogyan kell szuperszámítógépet építeni
- Pokolian jól elrejtette egyik leghasznosabb hardverét az Intel
-
PROHARDVER!

Ú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!
- PH!otósok beszélgetős, offolós topikja
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Pulzust is mér az Apple AirPods Pro 3
- gban: Ingyen kellene, de tegnapra
- Lenovo 3000 és IdeaPad notebookok
- exHWSW - Értünk mindenhez IS
- 5.1, 7.1 és gamer fejhallgatók
- Kerékpárosok, bringások ide!
- Bloodborne (PS4)
- PlayStation 5
- További aktív témák...
- Lézervágás és gravírozás (rétegelt lemez és kraftkarton)
- Xiaomi Pad 5 6/128 GB
- Szép! Lenovo Thinkpad T14 G3 Golyóálló Üzleti Érintős Laptop 14" -50% i5-1250P 12Mag 16GB/512GB FHD+
- MSI GF66 gamer laptop - i7-11800H, RTX 3070, 32GB RAM, 1TB SSD, Win11
- UHH! Lenovo Yoga 9i x360 Érintős Hajtogatós Laptop Tab 14" -60% i7-1280P 16/1TB Iris Xe 4K UHD OLED
- Apple iPhone 13 Pro Max / 128GB / Kártyafüggetlen / 12Hó Garancia / akku: 100%
- ÁRGARANCIA! Épített KomPhone Ultra 7 265KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- AKCIÓ! Apple Macbook Pro 16" 2019 i9 64GB 512GB 5500M macbook garanciával hibátlan működéssel
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Lenovo Thinkcentre M920t Tower/ M720s / M920s SFF / i5-8-9. gen/ WIN10-11/számla, garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest





