Signál (informatika)

Signál je v informatice jednoduchá zpráva, která se posílá procesům. Signály slouží v unixových systémech k informování procesu o výskytu události. Pomocí signálů lze meziprocesově komunikovat a manipulovat s procesy (ukončovat, pozastavovat, atd.).

Příjemcem/odesílatelem signálu může být jen proces (v Unixech může být odesílatelem i jádro operačního systému).

Jestliže proces obdrží signál, začne se ihned provádět příslušná akce, i když nebyla dokončena právě zpracovávaná funkce. Mluvíme tzv. o asynchronních signálech. Po dokončení akce pokračuje program od místa přerušení (pokud nebyl ukončen).

Dělení signálů

Signály se dělí do dvou skupin:

  1. Signály, které se posílají při chybové události
    • SIGILL (Illegal Instruction) – posílá jádro, jestliže se proces pokusí provést neplatnou, neznámou nebo privilegovanou instrukci
  2. Signály vznikající mimo proces při asynchronní události
    • SIGINT (Interrupt) posílá se procesu po stisknutí CTRL-c

Druhy akcí

Signál je jen obyčejné celé číslo. Jestliže však o nich mluvíme, odvoláváme se na ně jmény. Když proces dostane signál, zareaguje nějakou akcí, které dělíme do tří skupin:

  1. Implicitní akce – každý signál má za následek provedení nějaké implicitní akce, která je provedena, pokud proces, pro který je signál určen, nevyžaduje jinou akci
  2. Ignorování signálu – proces nemusí na signály reagovat
  3. Obsluha signálu – příchozí signál se obslouží pomocí uživatelsky definované funkce (handler). Jakmile se provede, proces pokračuje od místa, kde byl signálem přerušen.

Seznam implicitních akcí

  • exit – zrušení procesu
  • core – zrušení procesu a uložení obsahu jeho paměti do souboru core- ten se využívá pro analyzování chyb
  • ignore – ignorování signálu
  • stop – pozastavení procesu
  • continue – pokračování pozastaveného procesu

Dva signály provedou implicitní akci vždy. Je to SIGKILL (ukončí proces) a SIGSTOP (pozastaví proces).

Posílání signálů

Proces s UID (User ID) rovným nule může poslat signál libovolnému procesu. Proces, který má UID různé od nuly, může v Linuxu poslat signál těm procesům, které mají stejné reálné nebo saved UID jako má on reálné UID. Ve FreeBSD se musí UID procesů shodovat.

Signál pošleme z příkazového řádku (shellu) příkazem:

# kill [-s signal] PID

PID je číslo procesu (Process ID). Příkaz se jmenuje kill (česky zabít), protože původně vznikl kvůli ukončování procesů. Pokud není uvedeno číslo signálu, posílá se implicitně signál TERM.

Programově se signál posílá voláním funkce:

int kill(pid_t pid, int sig);  // (viz man 2 kill)

Funkce pošle signál sig jednomu nebo skupině procesů (podle hodnoty PID). Je-li sig==O, tak se pouze zjistí, má-li proces oprávnění poslat signál. Jakým procesům se signál pošle, záleží jen pid:

  • pid > 0 – pošle se procesu s pid
  • pid == 0 – pošle se procesům ve stejné skupině
  • pid == -1 – pošle se všem procesům kromě systémových
  • pid < -1 – pošle se procesům ve skupině s číslem -pid

Obsluha signálů

Jak je psáno výše, jsou signály asynchronní. Při obsluze tedy není zřejmé, v jakém se proces nachází stavu. Kvůli tomu by se měly v handlerech provádět jen bezpečné funkce (man sigaction). Výkon handleru pro obsluhu může být přerušen příchodem jiného signálu. Handler by měl vykonávat co nejméně operací, proto často jen zaznamená, že přišel signál. Program mimo handler periodicky kontroluje, zda přišel signál a eventuálně provádí požadovanou akci.

K nastavení obsluhy signálu slouží funkce:

int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);

Funkce nastaví obsluhu signálu sig podle act a do oldact uloží předchozí nastavení obsluhy. Struktura sigaction je definována takto:

struct sigaction
 {
  void (*sa_handler)(int);
  void (*sa_sigaction)(int, siginfo_t *, void *);
  sigset_t sa_mask;
  int sa_flags;
  void (*sa_restorer)(void);
 }

kde void (*sa_handler)(int) specifikuje akci svázanou se signálem – buď adresa handleru nebo SIG_DFL (výchozí akce), SIG_IGN (ignorování signálu). Díky sigset_t sa_mask můžeme nastavit masku signálu, které budou blokovány v handleru. int sa_flags přetvářejí chování handleru (např. SA_RESTART – restartovat přerušená systémová volání, SA_ONESHOT – po prvním obsloužení nastavit obsluhu na výchozí akci). Podrobnější popis lze najít v manuálových stránkách, viz man sigaction.

Někdy je těžké zajistit, aby program správně obsloužil signál, který může kdykoliv přijít a přerušit běh programu. Jestliže se tomuto chceme vyhnout, použijeme mechanismus blokování signálu. Blokované signály jsou ignorovány až do jejich odblokování, poté jsou procesu doručeny. Na rozdíl od ignorovaných, které jádro zahazuje a tak nejsou nikdy doručeny. K nastavování blokovaných signálů se používá funkce:

int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);

Funkce nastaví masku blokovaných signálů a vrátí starou masku. Chování se nastaví hodnotou how – SIG_BLOCK (blokují se stejné signály jako doposud a navíc ty definované argumentem set), SIG_UNBLOCK (signály v set jsou vyjmuty z blokovaných), SIG_SETMASK (blokovány signály definované v set).

Maska signálu se nastavuje funkcemi:

  • int sigemptyset(sigset_t *set) – inicializuje množinu signálů danou set na prázdnou
  • int sigfillset(sigset_t *set) – inicializuje množinu signálů danou set na všechny definované signály
  • int sigaddset(sigset_t *set, int signum) – přidá do množiny signálu signál signum
  • int sigdelset(sigset_t *set, int signum) – vymaže z množiny signálů signál signum
  • int sigismember(const sigset_t *set, int signum) – zjistí, zda je signál v dané množině signálů

Pro získání signálů, které čekají na odblokování, se používá funkce int sigpending(sigset_t *set);. Pokud je potřeba proces pozastavit, dokud nepřijde nějaký signál, využívá se funkce int pause() nebo funkce int sigsuspend(const sigset_t *sigmask), která dále mění masku blokovaných signálů danou pointrem *sigmask.

Seznam signálů

Rodina standardů Single UNIX Specification definuje následující signály v hlavičkovém souboru signal.h:

Název signálu Kód signálu Popis
SIGABRT 6 Ukončení procesu
SIGALRM 14 Vygenerován signál alarm
SIGBUS 10 Chyba sběrnice: „přístup do nedefinované oblasti paměti“
SIGCHLD 18 Potomek ukončen, pozastaven nebo znovu pokračuje*
SIGCONT 25 Pokračování, je-li pozastaven
SIGFPE 8 Chyba při zpracování čísla v plovoucí řádové čárce: „chybná aritmetická operace“
SIGHUP 1 Signál zavěšení
SIGILL 4 Neplatná strojová instrukce
SIGINT 2 Přerušení
SIGKILL 9 Kill (okamžité ukončení)
SIGPIPE 13 Zápis do roury, ze které nikdo nečte
SIGQUIT 3 Ukončit a vygenerovat core
SIGSEGV 11 Porušení ochrany paměti (segmentation fault, segmentation violation)
SIGSTOP 23 Dočasné pozastavení procesu
SIGTERM 15 Ukončení (žádost o ukončení)
SIGTSTP 23 Ukončující stop signál
SIGTTIN 26 Proces na pozadí se pokouší číst z TTY ("vstup")
SIGTTOU 27 Proces na pozadí se pokouší zapisovat na TTY ("výstup")
SIGUSR1 16 Uživatelsky definovaný 1
SIGUSR2 17 Uživatelsky definovaný 2
SIGPOLL 22 Událost pro polling
SIGPROF 29 Expirace profilovacího časovače
SIGSYS 12 Neplatné systémové volání
SIGTRAP 5 Krokování nebo bod přerušení (trap, vnitřní přerušení)
SIGURG 21 Na soketu jsou připravena urgentní data
SIGVTALRM 28 Signalizace od časovače virtuálního času: "vypršel virtuální časovač"
SIGXCPU 30 Překročen limit času CPU
SIGXFSZ 31 Překročen limit velikosti souboru

Poznámka: Hvězdička označuje rozšíření X/Open System Interfaces (XSI). Popis v uvozovkách přidán podle SUS.[1]

Reference

  1. http://www.opengroup.org/onlinepubs/007904975 – Single UNIX Specification

Externí odkazy

Read other articles:

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Maret 2023. Batumbang Apam adalah upacara adat yang berupa selamatan dalam rangka bertambahnya usia seorang anak. Upacara adat ini dilaksanakan oleh masyarakat di daerah pahuluan. Dalam Batumbang Apam akan disajikan kue apam yang banyaknya setinggi anak yang akan di...

 

2nd largest city in Equatorial Guinea For other uses, see Bata (disambiguation). You can help expand this article with text translated from the corresponding article in Spanish. (March 2021) Click [show] for important translation instructions. View a machine-translated version of the Spanish article. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate...

 

Cet article est une ébauche concernant le jeu vidéo. Vous pouvez partager vos connaissances en l’améliorant (comment ?) (voir l’aide à la rédaction). Consultez la liste des tâches à accomplir en page de discussion.   Liste des listes de jeux vidéo  Cette liste répertorie les jeux Xbox compatibles avec la Xbox 360 0-9 007: NightFire 2006 Fifa World Cup Germany 25 to Life 4x4 EVO 2 A Airforce Delta Storm Aggressive Inline Alias Aliens vs. Predator: Extinction...

Election in Texas This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: 1896 United States presidential election in Texas – news · newspapers · books · scholar · JSTOR (October 2022) Main article: 1896 United States presidential election 1896 United States presidential election in Texas ← 1892...

 

For the 1934 American film, see She Was a Lady (film). She Was a Ladyalso Angels of Doomalso The Saint Meets His Match First editionAuthorLeslie CharterisCountryUnited KingdomLanguageEnglishSeriesThe SaintGenreMystery novelPublisherHodder and StoughtonPublication date1931Media typePrint (Hardback & Paperback)Preceded byAlias the Saint (UK)Wanted for Murder (US) Followed byThe Holy Terror  She Was a Lady is the title of a mystery novel by Leslie Charteris featuring...

 

Коты быстрого реагированияангл. Swat Kats: The Radical Squadron Кадр из вступления мультсериала Жанры Комедия, боевик, приключения, фантастика Техника анимации рисованная Режиссёры Роберт АльварезФрэнк АндринаКунио ШимамураАллен Уилзбах Сценаристы Кристиан Тремблэ Ивон Трембл�...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Oktober 2022. Nubkhaes Era: Kerajaan Baru(1550–1069 BC) Hieroglif Mesir Prasasti Ratu Nubkhaes (Museum Louvre) Nubkhaes (Emas [=Hathor] muncul) merupakan seorang ratu Mesir Kuno yang bergelar Istri Kerajaan Agung dan yang bersatu dengan kecantikan mahkota put...

 

Part of a series onProtestantism Outline Concepts Anti-Protestantism Bible Criticism Culture Demographics Ecclesiology Liturgy Relations with Catholics Theologies Five Solas History Proto-Protestantism Bohemian Reformation Reformation Magisterial Radical Counter Martin Luther Ninety-five Theses Augsburg Confession Huldrych Zwingli John Calvin Arminianism Crypto-Protestantism Nonconformists Dissenters Puritans John Wesley Pietism Great Awakenings in America Revival meetings Branches Proto-Pro...

 

一中同表,是台灣处理海峡两岸关系问题的一种主張,認為中华人民共和国與中華民國皆是“整個中國”的一部份,二者因為兩岸現狀,在各自领域有完整的管辖权,互不隶属,同时主張,二者合作便可以搁置对“整个中國”的主权的争议,共同承認雙方皆是中國的一部份,在此基礎上走向終極統一。最早是在2004年由台灣大學政治学教授張亞中所提出,希望兩岸由一中各表�...

10th Cavalry Regiment10th Cavalry coat of armsActive1866–1944, 1958–Country United StatesBranch United States ArmyTypeCavalrySizeRegimentNickname(s)Buffalo Soldiers[1]Motto(s)Ready and ForwardEngagements Indian Wars Spanish–American War Philippine–American War Mexican Expedition World War I era combat on US-Mexican border World War II Vietnam War Iraq War War in Afghanistan Decorations Presidential Unit Citation (2) Valorous Unit Award (1st Squadron) Valorous Unit A...

 

Railway station in Tsuruga, Fukui Prefecture, Japan  A 01   B 08 Tsuruga Station敦賀駅 Tsuruga Station in September 2018General informationLocation1-1-24 Kanawa-cho, Tsuruga City, Fukui Prefecture 914-0026JapanCoordinates35°38′41″N 136°4′36″E / 35.64472°N 136.07667°E / 35.64472; 136.07667Operated by JR West JR Freight Hapi-Line Fukui Line(s)  A   B  Hokuriku Main Line Hokuriku Shinkansen    ...

 

Czech ice hockey player Ice hockey player Radek Koblížek Koblížek in 2016Born (1997-10-20) 20 October 1997 (age 26)Ivančice, Czech RepublicHeight 175 cm (5 ft 9 in)Weight 73 kg (161 lb; 11 st 7 lb)Position ForwardShoots RightLiiga team KooKooPlaying career 2015–present Radek Koblížek (born 20 October 1997) is a Czech ice hockey forward currently playing for KooKoo of the Finnish Liiga.[1] Radek Koblížek born in Ivančice (Brno-cou...

Suspension bridge in England Humber BridgeThe Humber Bridge, Lincolnshire/East YorkshireCoordinates53°42′23″N 0°27′01″W / 53.7064°N 0.4502°W / 53.7064; -0.4502Carries4 lanes of motor traffic (A15), pedestrian- cycle-way either sideCrossesHumberLocaleHessle, East Riding of Yorkshire/North LincolnshireMaintained byThe Humber Bridge BoardHeritage statusGrade I listedCharacteristicsDesignSuspensionTotal length2,220 m (7,280 ft; 1.38 mi)Width28.5&...

 

Karan TackerLahir11 Mei 1986 (umur 38)[1]MumbaiKebangsaanIndianPekerjaanAktor, Model, Host TV, PenariDikenal atasRang Badalti OdhaniEk Hazaaron Mein Meri Behna Hai Karan Tacker adalah aktor dan model India. Dia terkenal dengan perannya sebagai Viren Vadhera dari serial Star Plus yang populer Ek Hazaaron Mein Meri Behna Hai. Dia adalah kontestan Jhalak Dikhhla Jaa pada tahun 2014. Kehidupan pribadi Karan Tacker dibesarkan di Mumbai bersama kakak perempuannya Sasha. Dia memperoleh...

 

Family of insects Not to be confused with Sphindidae. For a complete species list of this family, see Sphingidae species list. For the Miraculous: Tales of Ladybug & Cat Noir villain known as Hawk Moth, see List of Miraculous: Tales of Ladybug & Cat Noir characters § Hawk Moth. Hawk mothsTemporal range: Miocene–Recent PreꞒ Ꞓ O S D C P T J K Pg N Convolvulus hawk-moth, Agrius convolvuli Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Arthropoda Class: ...

Classificação dos países de acordo com o FMI e ONU em 2022.[1][2]   Países desenvolvidos   Países em desenvolvimento   Países menos desenvolvidos   Sem dados Mapa-múndi representando as quatro categorias do Índice de Desenvolvimento Humano, baseado no relatório publicado em 15 de dezembro de 2020, com dados referentes a 2019.[3]   0,800 – 1,000 (muito alto)   0,700 – 0,799 (alto)   0,555 – 0,699 (médio) ...

 

Ligue des nations de l'UEFA 2018-2019 Généralités Sport Football Création 2018-2019 Organisateur(s) UEFA Édition 1re Lieu(x) Phase de groupes EuropePhase finale Portugal Date Phase de groupes (2018) :6 septembre - 20 novembrePhase finale (2019) : 5 - 9 juin Participants 55 équipes Matchs joués 142 Palmarès Vainqueur Portugal (1) Finaliste Pays-Bas Troisième Angleterre Buts 342 (moyenne 2,41) Meilleur joueur Bernardo Silva (Phase finale) Meilleur(s) buteur(s) Aleksandar Mit...

 

Type of Welsh festival of literature, music and performance Part of a series on theCulture of Wales History Timeline Bibliography Prehistory Roman Era Anglo-Welsh Wars Early Middle Ages Kingdom of Gwynedd Kingdom of Powys Deheubarth Medieval Welsh law Norman invasion Edwardian conquest Late Middle Ages Statute of Rhuddlan Glyndŵr rebellion Laws in Wales Acts 1535 and 1542 Colonies People Languages Welsh (Y Fro Gymraeg History Welsh placenames Welsh surnames Welsh-medium education) Welsh Engl...

American politician Nicole LowenMember of the Hawaii House of Representativesfrom the 7th district6th (2012–2022)IncumbentAssumed office November 6, 2012Preceded byRedistricted Personal detailsBorn (1972-11-06) November 6, 1972 (age 51)Washington, D.C., U.S.Political partyDemocraticAlma materUniversity of PennsylvaniaUniversity of HawaiiWebsitenicolelowen.com Nicole E. Lowen[1] is an American politician and a Democratic member of the Hawaii House of Representati...

 

1918 film by Henry King Beauty and the RogueAdvertisement for filmDirected byHenry KingWritten byElizabeth Mahoney (scenario)Story byArthur BertheletStarringMary Miles MinterCinematographyJohn F. SeitzProductioncompanyAmerican Film CompanyDistributed byMutual FilmRelease date January 29, 1918 (1918-01-29) Running time5 reelsCountryUnited StatesLanguageSilent (English intertitles) Beauty and the Rogue is a 1918 American silent comedy crime drama film directed by Henry King and s...