Portál AbcLinuxu, 14. července 2025 13:55


Dotaz: Cteni z roury

29.11.2003 19:24 buma | skóre: 14
Cteni z roury
Přečteno: 97×
Odpovědět | Admin
Zdravim,

mam takovy maly problem. Ve svem programku(v C) potrebuji cist z pojmenovane roury. Chtel bych, aby kdyz prectu vsechny data z roury, proces usnul. A vzbudil se v okamziku, kdy do roury dorazi nova data.

Nevite nekdo nahodou, jak vyse uvedeno chovani docilit?

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

Odpovědi

29.11.2003 20:33 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Cteni z roury
Odpovědět | | Sbalit | Link | Blokovat | Admin
zeby man 4 fifo? alebo aky jazyk sa ma pouzit?
29.11.2003 20:53 Beda
Rozbalit Rozbalit vše Cteni z roury
Odpovědět | | Sbalit | Link | Blokovat | Admin
ja doufal, ze defaultne otevrena roura nema nastaveny O_NONBLOK flag u deskriptoru. Over si, ze skutecne kdyz dojdou data neceka, tj v "ps -l" ve sloupecku "wchan" neni tusim "wait4" (pokud mas ovsem korektni mapu symbolu jadra odpovidajici jadru ktere je prave spustene tam, kde ji ps ocekava...) jinak fcntl(ROURA, F_SETFL, O_NONBLOCK); man fcntl a todle
29.11.2003 21:05 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Cteni z roury
Non-blocking I/O je samozřejmě také řešení, ale když chci usnout, dokud nebudou k disposici data, tak proč emulovat select(), když už existuje. Navíc, jestli je ta roura právě jedna, úplně by sis vystačil s fgetc() -- proces usne jako dudek, dokud nepřije alespoň jeden znak, ten ungetc()neš a jedeš dál ;-)
29.11.2003 20:54 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Cteni z roury
Odpovědět | | Sbalit | Link | Blokovat | Admin
viz select(2), select_tut(2) (tutoriál!), případně poll(2) (Linux-only)
29.11.2003 23:13 buma | skóre: 14
Rozbalit Rozbalit vše Cteni z roury
Dekuji vsem za odpovedi. :)

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.