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

Dotaz: SIGCHLD a pipe

27.11.2009 12:52 Lada
SIGCHLD a pipe
Přečteno: 155×
Odpovědět | Admin
Prosim o vysvetleni meho problemu. 2x pomoci forku spustim stejny prikaz 'cat' a hned ukoncim jeho stdin. Pokud to ukoncim u 2 prikazu, detekuji SIGCHLD pro jeho ukonceni. Pokud ale uzavru stdin 1 prikazu, SIGCHLD nikdy nedostanu. Schematicky znazorneno:
int p1[3],p2[3];
int pid1,pid2; 
pid1 = popen3 (p1,"cat");
pid2 = popen3 (p2,"cat");   
close(p1[0]); /* toto by melo ukoncit pid1, ale neukonci */
close(p2[0]); /* toto funguje */

Pokud ma nekdo vysvetleni, budu rad. Dekuji.

Řešení dotazu:


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

Odpovědi

27.11.2009 14:33 Lada
Rozbalit Rozbalit vše Re: SIGCHLD a pipe
Odpovědět | | Sbalit | Link | Blokovat | Admin
Toz jsem na to prisel diky Pythonu, tam se to chova uplne stejne (modul subprocess Popen) pokud se nezada parametr close_fds = True. Podobne je to v C, musi se uzavrit vsechny open soubory a nechat jen 0,1,2. Tak snad to nekomu v budoucnu pomuze. Lada.

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.