Portál AbcLinuxu, 9. května 2025 22:55

Dotaz: Zablokovat signály po načtení programu

13.12.2015 15:12 Jiří
Zablokovat signály po načtení programu
Přečteno: 325×
Odpovědět | Admin
Lze nějak zablokovat signály hned po načtení programu do paměti? Než zavolám sigprocmask z main, tak by už mohlo být pozdě. Když udělám funkci s __attribute__((constructor)) a dám to tam, tak je to zavoláno dříve, ale stále to může být až po té, co běží jiné "konstruktory", třeba z přilinkovaných knihoven apod. Je možné nějak nastavit (třeba něco v ELF formátu), že chci mít signály blokované? Nebo třeba můj program spustí jiný program, tak může prakticky nastavit jakýkoliv stav před execve, který zdědím, ale co když ho nechci a přenastavit už je pozdě a buď mi signál uteče (než nastavím handler), nebo se provede výchozí akce?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.12.2015 17:40 Jirka
Rozbalit Rozbalit vše Re: Zablokovat signály po načtení programu
Odpovědět | | Sbalit | Link | Blokovat | Admin
já bych řek, že jste si odpověděl sám: nastavit masku a pak udělat exec toho programu nebo fork a pokračovat v potomkovi. program/potomek pak na začátku pomocí sigpending zjistí, jestli mezitím něco přišlo. fork má tu výhodu, že potomek zdědí i handlery. obávám se, že nic fikanějšího než standardní postupy sigaction/sigprocmask a fork/exec na linuxu není.

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.