Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C, C++: Ikuisesta silmukasta poistuminen, ilman odottamista

HeiVaa [07.12.2017 10:28:13]

#

Ongelmani on ikuisesta silmukasta poistuminen, esimerkiksi ESC-napin painalluksella.

Minulla on ikuinen silmukka, joka pollaa koko ajan sarjaportista tietoa. Miten saan napattua käyttäjän näppäimistön painallukset, ilman että ohjelma jää odottamaan painallusta, vaan jatkaa pollausta normaaliin tapaan, jos mitään näppäintä ei paineta?

Ohjelma pyörii Linux-koneessa ja en siis halua lopettaa koko ohjelmaa, vaan päästä vain ulos silmukasta.

Grez [07.12.2017 11:12:27]

#

Laitat muuttujan (esim. bool kayttajaHaluaaPoistua = false )

Sit ikuisessa silmukassa

while (true) {
    if (kayttajaHaluaaPoistua) break;
}

Toki myös koko silmukan voi muuttaa epäikuiseksi:

while (!kayttajaHaluaaPoistua) {
}

Sitten käyttöliittymäsäikeessä kun käyttäjä painaa ESC-näppäintä, niin asetat tuon muuttujan arvoksi true.

Sinänsä tietenkin käyttöliittymän täytyy esim. pyöriä eri säikeessä kuin missä tuo ikuinen silmukka on, mutta näinhän se varmaan muutenkin sinulla on.

HeiVaa [07.12.2017 11:45:14]

#

Ei ole säikeitä käytössä nykyisessä ohjelmaversiossa. Ja niin sen yrittäisin pitääkin, jos vain löytyy ratkaisu tuohon silmukasta poistumiseen.

Grez [07.12.2017 12:08:51]

#

Voisit käyttää selectiä tarkistamaan, onko stdin:ssä mitään luettavaa ja jos on niin luet sieltä merkin ja mikäli se on se mikä esc painettaessa tulee, niin sitten keskeytät ohjelman.

HeiVaa [07.12.2017 15:03:27]

#

Kiitti vinkeistä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta