#30 Staon
Ale vaše první ukázka kódu měla vadu, že proces A skončil ihned poté, co se aplikace B spustila (ihned po prvním úspěšném otevření roury, funkce exit ukončuje celý proces, ne jen vlákno). Jste si jistý, že tam něco takového nemáte?
Ale to je přesně to co bych potřeboval. Bohužel to nefunguje a aplikace A se neukončí, protože funkce exit se nikdy nezavolá. Funkce open vždy skončí s chybou -1 a errno je nastaveno na hodnotu 2.
Toto jsem zjistil:
Pustím aplikaci A, která vypisuje pořád něco na display. Aplikace A si vytvoří další vlákno ve kterém čeká až bude vytvořená roura "myfifo". Až bude tato roura vytvořená aplikace A se ukončí.
Pustím aplikaci B, která vytvoří rouru "myfifo" a skončí.
Aplikace A na to bohužel nereaguje a proto aplikaci A ukončím ručně (na kostce zmáčknu tlačítko Esc a na to aplikace A reaguje tak, že se ukončí)
Znovu spouštím aplikaci A, která se ihned ukončí protože už najednou vidí vytvořenou rouru "myfifo".
Proč tu rouru nevidí hned, proč musím nejdřívé aplikaci A ukončit a potom znovu spustit aby rouru viděl?