Signály, jejich význam a použití Jan Kolařík
Co to je Signály fungují jako softwarová přerušení Po přijetí signálu může proces nebo skript provést nějakou událost Signály jsou označeny jménem nebo číslem (zde 1 – 46) Signály mohou být generovány např. terminálovým driverem, příkazem kill
Příkaz kill Procesu lze poslat signál příkazem kill kill –l vypíše seznam signálů Př. kill pošle signál 9 procesu s PID 8385 Vynecháme-li číslo (jméno) signálu, implicitně se pošle signál 15 (SIGTERM) kill kill 8385 kill -SIGTERM 8385
Signál 1 (SIGHUP) Posílá se shellu terminálovým driverem, když se rozpadne spojení Procesu se posílá, když končí jeho rodič nohup příkaz & proces bude pokračovat i po skončení rodiče Démoni odchytávají signál HUP a interpretují jako žádost o restart
Signály 2 (INTerrupt) a 3 (QUIT) Signál 2 – program by se měl ukončit, posíláno terminálovým driverem obvykle při stisku CTRL-C Signál 3 – stejné jako signál 2, ale navíc se provede coredump (zde jsou coredumpy zakázány) - CTRL - \ Výpis klávesových zkratek, které posílají signály stty -a
Signály 9 (KILL) a 15 (TERMinate) 15 – je ignorován shellem - program by se měl regulerně ukončit - lze zavolat pomocí kill PID (bez parametru) 9 – ukončí proces i když to proces nechce -Nelze na signál 9 nastavit reakci -Ukončí i shell
Příkaz trap – reakce na signály trap ”echo 2 nebo 3” 2 3 při příchodu signálu 2 nebo 3 se vypíše 2 nebo 3 trap ”” 2 3 proces bude ignorovat signály 2 a 3 trap – 2 3 chování na signály se vrátí na implicitní kill -2 $$ pošle signál 2 aktuálnímu shellu trap vypíše předefinované reakce na signály
Materiály bashdoc-1.4/bashs14.htmlhttp://docs.linux.cz/programming/interpreted/ bashdoc-1.4/bashs14.html kap8.htmhttp://docs.linux.cz/programming/c/c_dobias/ kap8.htm přednášky