Portál AbcLinuxu, 12. května 2025 05:57

Dotaz: "Preruseni nekonecne smycky" v C

12.2.2008 18:57 bizi | skóre: 8
"Preruseni nekonecne smycky" v C
Přečteno: 372×
Odpovědět | Admin
Zdravim,
nazev dotazu zni asi trochu podivne, proto hned uvedu na pravou miru..
Ve smycce ziskavam v urcitem casovem intervalu data ze zarizeni, ktera pote zpracovavam. Rad bych ale, aby tato smycka byla ukoncitelna napriklad stiskem urcite klavesy ci kombinace klaves (napr. q, ctrl-q, ci pod.). Takovyto program jsem totiz schopen ukoncit jen zkratkou ctrl-c - jenze to se potom nevykona kod po te smycce (uvolneni pameti apod.).
Jakym zpusobem mohu takto odchytavat klavesnici a cyklus pote ukoncit, pokud je stisknuta pozadovana klavesa?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

michich avatar 12.2.2008 19:00 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: "Preruseni nekonecne smycky" v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Můžeš odchytit signál QUIT (případně další) a v handleru nastavit flag konec=1. Smyčka bude while(!konec) {...}. man sigaction, man 7 signal.
12.2.2008 19:09 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: "Preruseni nekonecne smycky" v C
Já myslel, že ctrl-c vyvolá SIGINT ...
SIGINT is sent when the user on the process' terminal presses the interrupt the running process key — typically Control-C, but on some systems, the "delete" character or "break" key (the latter is not an ASCII character, but an out-of-band signal such as an electrical condition on a serial port).
12.2.2008 19:29 bizi | skóre: 8
Rozbalit Rozbalit vše Re: "Preruseni nekonecne smycky" v C
Aha, uz vim..
Smycka tedy pobezi, dokud nebude stisknuto ctrl+c (ktere vyvola signal SIGINT), pote bude zmenen priznak podminky smycky, ta se ukonci a probehne normalne zbytek kodu.. Diky:)
michich avatar 12.2.2008 20:11 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: "Preruseni nekonecne smycky" v C
Já myslel, že ctrl-c vyvolá SIGINT ...
Jo, pravda. SIGQUIT je ctrl-\

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.