Ero sivun ”Signaali” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(täydennyksiä, korjauksia, muotoilujen muutoksia)
p (pari wikilinkkiä)
Rivi 1: Rivi 1:
Linuxissa ohjelmat voivat lähettää toisilleen erityyppisiä viestejä signaaleilla. Signaalien avulla saadaan ohjelmat tekemään tiettyjä asioita, ja useimmiten niitä käytetään ohjelmien lopettamiseen.
Linuxissa ohjelmat voivat lähettää toisilleen erityyppisiä viestejä signaaleilla. Signaalien avulla saadaan ohjelmat tekemään tiettyjä asioita, ja useimmiten niitä käytetään ohjelmien lopettamiseen.


Signaaleja voi lähettää komentoriviltä näppäinyhdistelmillä (INT, QUIT, STP) tai [[kill]]-komennolla ja ohjelmista kill-järjestelmäkutsulla. Monia signaaleja lähetetään viestittämään erilaisista virhe- ja erikoistilanteista ytimen, X:n tms. toimesta.
Signaaleja voi lähettää komentoriviltä näppäinyhdistelmillä (INT, QUIT, STP) tai [[kill]]-komennolla ja ohjelmista kill-järjestelmäkutsulla. Monia signaaleja lähetetään viestittämään erilaisista virhe- ja erikoistilanteista [[ydin|ytimen]], [[X]]:n tms. toimesta.


Useimpien signaalien oletusvaikutus on ohjelman lopettaminen, mutta ohjelma voi määritellä oman tapansa suhtautua eri signaaleihin. Esimerkiksi [[komentorivi]]ohjelmalle lähetetään näppäinyhdistelmällä ctrl+c signaali 2 (''INT''), joka tarkoittaa sitä, että ohjelma saa tallentaa tilansa ja sen jälkeen sen pitäisi sulkeutua. Tämä signaali esimerkiksi lähetetään kaikille ohjelmille järjestelmän sammuessa.
Useimpien signaalien oletusvaikutus on ohjelman lopettaminen, mutta ohjelma voi määritellä oman tapansa suhtautua eri signaaleihin. Esimerkiksi [[komentorivi]]ohjelmalle lähetetään näppäinyhdistelmällä ctrl+c signaali 2 (''INT''), joka tarkoittaa sitä, että ohjelma saa tallentaa tilansa ja sen jälkeen sen pitäisi sulkeutua. Tämä signaali esimerkiksi lähetetään kaikille ohjelmille järjestelmän sammuessa.

Versio 7. lokakuuta 2009 kello 17.06

Linuxissa ohjelmat voivat lähettää toisilleen erityyppisiä viestejä signaaleilla. Signaalien avulla saadaan ohjelmat tekemään tiettyjä asioita, ja useimmiten niitä käytetään ohjelmien lopettamiseen.

Signaaleja voi lähettää komentoriviltä näppäinyhdistelmillä (INT, QUIT, STP) tai kill-komennolla ja ohjelmista kill-järjestelmäkutsulla. Monia signaaleja lähetetään viestittämään erilaisista virhe- ja erikoistilanteista ytimen, X:n tms. toimesta.

Useimpien signaalien oletusvaikutus on ohjelman lopettaminen, mutta ohjelma voi määritellä oman tapansa suhtautua eri signaaleihin. Esimerkiksi komentoriviohjelmalle lähetetään näppäinyhdistelmällä ctrl+c signaali 2 (INT), joka tarkoittaa sitä, että ohjelma saa tallentaa tilansa ja sen jälkeen sen pitäisi sulkeutua. Tämä signaali esimerkiksi lähetetään kaikille ohjelmille järjestelmän sammuessa.

Eräs yleinen signaali on signaali numero 1 (HUP). Se lähetetään ohjelmalle tilanteessa jossa yhteys, jonka kautta ohjelmaa käytettiin, katkeaa. Tämä tapahtuu esimerkiksi silloin kun päätteessä ajetaan komentoriviohjelmaa ja pääte suljetaan tai jos ohjelmaa ajetaan etäkoneella SSH-yhteyden yli. Monet ohjelmat reagoivat HUP-signaaliin samalla tavalla kuin TERM-signaaliin.

Signaalit numerot 9 (KILL) ja 19 (STOP) ovat ainoat signaalit, joiden vaikutusta ohjelma ei voi muuttaa, vaan nämä signaalit lopettavat (KILL) tai pysäyttävät (STOP) kyseisen ohjelman suorituksen välittömästi.

KILL-signaali annetaan yleensä koneen sulkemisen yhteydessä, kun ensin on varoitettu ohjelmia TERM-signaalilla. Sillä voi myös sulkea rikkinäisen ohjelman, joka ei tottele muita signaaleja, mutta koska ohjelmalle ei jää mahdollisuutta sulkea jälkensä tätä

Joitakin signaaleja:

  • HUP ("hangup"): yhteys käyttäjään katkennut. Kun Unix-koneita käytettiin puhelinverkon välityksellä tämä signaali annettiin yhteyden katketessa. Nykyään tyypillinen syy on pääteikkunan sulkeminen. Palvelinohjelmistoja voi usein pyytää lukemaan asetustietonsa uudestaan tällä signaalilla.
  • INT ("interrupt"): käyttäjä on painanut CTRL-C. Ohjelma sulkeutuu.
  • QUIT: käyttäjä on painanut näppäinyhdistelmää QUIT (katso stty). Ohjelma sulkeutuu, mutta jättää core-tiedoston ohjelman toiminnan tutkimiseksi.
  • KILL: ydin lopettaa ohjelman ilman varoitusta
  • SIGUSR1: ohjelmakohtaisesti määritelty
  • SEGV: väärä muistinosoitus eli vika ohjelmassa, muistipiireissä tms.
  • TERM: ohjelma pyydetään sulkeutumaan, esimerkiksi shutdown-käskyn takia
  • STOP: ydin pysäyttää ohjelman
  • CONT: ohjelman annetaan jatkaa

Katso myös