Portál AbcLinuxu, 12. května 2025 06:59

Dotaz: c++ cyklus konec se stiskem klavesy

10.3.2009 15:28 tascoa | skóre: 11
c++ cyklus konec se stiskem klavesy
Přečteno: 535×
Odpovědět | Admin

Dobry den, potreboval bych vedet, jak v c++ udelam cyklus, ktery mi skonci, az se stiskem urciteho kombinace klaves, napr. Ctrl+X. Vim, jak toto udelat, treba pro K a pak enter = konec. Ale jak se toto dela, kdyz chci okamzite pri stisku teto kombinace ukoncit cyklus. Diky za pomoc.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.3.2009 17:32 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: c++ cyklus konec se stiskem klavesy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kombinace Ctrl+C ti možná bude ukončovat cykly už teď :-)
kozzi avatar 10.3.2009 17:37 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: c++ cyklus konec se stiskem klavesy
Odpovědět | | Sbalit | Link | Blokovat | Admin
tak pokud ti jde o kombnace kalves, tak na to bude asi potreba primo nejak odchytavat zmackntou klavesu, coz se asi bude delat nejak pres xlib ci tak neco, takze to asi nevyresis. Takze doporucuju to resit jen tim, ze zadas treba jedno pismenko. Takze obycejnym getcharem to odchytis a pokud to bude jedno z vyvolenych tak se stane zvolena cinost (ukonceni cyklu atd.)
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
kozzi avatar 10.3.2009 17:38 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: c++ cyklus konec se stiskem klavesy
ackoliv tohle neni moc idelani reseni, jelikoz to nepujde udelat tak aby ten cyklus necekla na tu klavesu.
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
10.3.2009 18:11 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: c++ cyklus konec se stiskem klavesy
V neblokujícím režimu by to šlo.
kozzi avatar 10.3.2009 18:16 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: c++ cyklus konec se stiskem klavesy
to myslis jak? jako ze by se nastavil priznak pro termios?
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
10.3.2009 18:43 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: c++ cyklus konec se stiskem klavesy
Zda je file deskriptor blokující nebo neblokující je podobná vlastnost, jak jestli je třeba jen pro čtení. Na úrovni file deskriptorů se to nastavuje při otevření souboru (open()), nebo voláním fcntl() s F_SETFL. Jestli je nutné to ošetřit i na úrovni I/O streamů v C nevím, myslím si, že ne.

Když je soubor otevřen v neblokujícím režimu a zavoláš nějakou operaci (fread, fwrite, fgetc apod.), která by proces zablokovala, skončí myslím chybou a v errno se nastaví EAGAIN nebo EWOULDBLOCK. To platí i pro standardní vstup a výstupy, protože se chovají také jako soubory (dokonce to soubory přímo mohou být).

Mimochodem, pozor na "obyčejné" soubory - Linuxový kernel považuje pevný disk za tak rychlý, že práce se souborem i v neblokujícím režimu vás neuchrání od čekání na seekování hlaviček a podobné operace; to kdybyste to náhodou chtěli použít pro rychlý jednovláknový webový server, jako třeba Lighttpd <=1.4.
kozzi avatar 10.3.2009 18:51 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: c++ cyklus konec se stiskem klavesy
Hmm, zajímavé, to sem neznal. Díky to se mi určitě bude hodit. No tak termios potřebovat stejně bude, teda minimálně pokud nebude chtít po zadání písmenka zadávat ještě enter.
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"

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.