Portál AbcLinuxu, 13. července 2025 19:02


Dotaz: Čekání na data (pipe) + spuštění funkce, C

5.7.2011 22:08 Petr
Čekání na data (pipe) + spuštění funkce, C
Přečteno: 372×
Odpovědět | Admin
Dobrý den, jsem začátečník. Mám program v C, v hlavní smyčce čeká na stisk klávesy - funkce getch(). Externí proces nahodile zapisuje do pojmenované roury /tmp/my.pipe . Jakmile se objeví data v rouře, potřebuji docílit toho, aby program spustil definovanou funkci a data z roury načetl do proměnné (něco jako přerušení ?). Děkuji za rady.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.7.2011 08:45 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Potrebuješ vlákna: pthreads
pavlix avatar 7.7.2011 13:14 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
K čemu proboha, vždyť chce jen číst ze souboru?
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
7.7.2011 20:01 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
Pretože chce v jednom čase čakať na vstup z pípy aj na návrat z getch(). Aby mohol použiť select()/poll() musel by prepnúť terminál do raw módu, a urobiť select()/poll() na file deskriptory pípy a stdin. A to už nie je getch().
pavlix avatar 7.7.2011 21:02 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
A je nějaký konkrétní důvod, proč by select/poll neměly fungovat dohromady s getch? Možná to nebude úplně dokonalé, něco málo se píše tu.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
6.7.2011 11:33 Sten
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Buď použijte vlákna nebo signál SIGIO. Každé má své přednosti a zápory.
6.7.2011 12:56 Petr
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky, podívám se na to a pak téma updatnu. Petr
7.7.2011 07:07 ext3fs
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na tohle snad slouzi select() nebo poll() ne?
pavlix avatar 7.7.2011 13:17 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
Přesně tak, select()/poll() slouží k čekání na různé vstupy a výstupy. Pro začátečníka daleko jednodušší než teď hned začít synchronizovat vlákna.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
7.7.2011 21:18 Jan Dvorak
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak sprovznit Smart Mouse programator.
14.7.2011 13:21 Petr
Rozbalit Rozbalit vše Re: Čekání na data (pipe) + spuštění funkce, C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem zatím věc vyřešil primitivě timeoutem na getc() a cyklem. Až bude čas, tak to vylepším. Petr

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.