Muokataan sivua Signaali

Siirry navigaatioon Siirry hakuun
Varoitus: Et ole kirjautunut sisään. IP-osoitteesi näkyy julkisesti kaikille, jos muokkaat. Jos kirjaudut sisään tai luot tunnuksen, muokkauksesi yhdistetään käyttäjänimeesi ja saat paremman käyttökokemuksen.

Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.

Nykyinen versio Oma tekstisi
Rivi 1: Rivi 1:
Ohjelmat eli [[prosessi]]t voivat Linuxissa saada toisensa tekemään tiettyjä asioita lähettämällä toisilleen signaaleita. Niitä käytetään yleisimmin ohjelmien sulkemiseen eli tappamiseen (engl. ''kill''). Erilaisista virhe- ja erikoistilanteista ilmoitetaan myös usein signaaleita lähettämällä.
Ohjelmat eli [[prosessi]]t voivat Linuxissa saada toisensa tekemään tiettyjä asioita lähettämällä toisilleen signaaleita. Niitä käytetään yleisimmin ohjelmien sulkemiseen eli tappamiseen (engl. ''kill''). Erilaisista virhe- ja erikoistilanteista ilmoitetaan myös usein signaaleita lähettämällä.


Eri signaaleja voi lähettää [[komentorivi]]ltä joko näppäinyhdistelmillä (signaalit INT, QUIT ja STP) tai [[kill]]-komennolla. Ohjelmista käsin signaalien lähettäminen tapahtuu <tt>kill</tt>-järjestelmäkutsulla.
Eri signaaleja voi lähettää [[komentorivi]]ltä joko näppäinyhdistelmillä (signaalit INT, QUIT, STP) tai [[kill]]-komennolla. Ohjelmista käsin signaalien lähettäminen tapahtuu kill-järjestelmäkutsulla.


Useimpien signaalien oletusvaikutus on ohjelman lopettaminen, mutta ohjelma voi määritellä oman tapansa suhtautua eri signaaleihin. Esimerkiksi näppäinyhdistelmällä <tt>Ctrl+C</tt> lähetetään signaali 2 (INT), joka tarkoittaa, että ohjelma saa tallentaa tilansa ja sen jälkeen sen pitäisi sulkeutua. Useat ohjelmat eivät kuitenkaan tämän signaalin saatuaan sulkeudu, vaan esimerkiksi vain kehottavat käyttäjää sulkemaan ohjelman sen oman käyttöliittymän kautta.
Useimpien signaalien oletusvaikutus on ohjelman lopettaminen, mutta ohjelma voi määritellä oman tapansa suhtautua eri signaaleihin. Esimerkiksi näppäinyhdistelmällä <tt>Ctrl+C</tt> lähetetään signaali 2 (INT), joka tarkoittaa, että ohjelma saa tallentaa tilansa ja sen jälkeen sen pitäisi sulkeutua. Useat ohjelmat eivät kuitenkaan tämän signaalin saatuaan sulkeudu, vaan esimerkiksi vain kehottavat käyttäjää sulkemaan ohjelman sen oman käyttöliittymän kautta.
Rivi 9: Rivi 9:
Signaalit numero 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.
Signaalit numero 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. Koska ohjelmalle ei tällöin jää mahdollisuutta sulkeutua hallitusta ja esimerkiksi tallentaa keskeneräisiä töitä, on tätä signaalia yleensä syytä käyttää vasta viimeisenä vaihtoehtona ohjelman sulkemiseen.
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 tällöin jää mahdollisuutta sulkea jälkensä, on sitä yleensä syytä käyttää vasta viimeisenä vaihtoehtona ohjelman sulkemiseen.


==Yleisimpiä signaaleita==
==Yleisimpiä signaaleita==
Rivi 16: Rivi 16:
* '''QUIT''': käyttäjä on painanut näppäinyhdistelmää Ctrl+D (katso [[stty]]). Ohjelma sulkeutuu, mutta jättää [[core]]-tiedoston ohjelman toiminnan tutkimiseksi.
* '''QUIT''': käyttäjä on painanut näppäinyhdistelmää Ctrl+D (katso [[stty]]). Ohjelma sulkeutuu, mutta jättää [[core]]-tiedoston ohjelman toiminnan tutkimiseksi.
* '''KILL''': ydin lopettaa ohjelman ilman varoitusta
* '''KILL''': ydin lopettaa ohjelman ilman varoitusta
* '''USR1''', '''USR2''': ohjelmakohtaisesti määritelty
* '''USR1''': ohjelmakohtaisesti määritelty
* '''SEGV''': väärä muistinosoitus eli vika ohjelmassa, muistipiireissä tms.
* '''SEGV''': väärä muistinosoitus eli vika ohjelmassa, muistipiireissä tms.
* '''TERM''': ohjelma pyydetään sulkeutumaan, esimerkiksi [[shutdown]]-käskyn takia
* '''TERM''': ohjelma pyydetään sulkeutumaan, esimerkiksi [[shutdown]]-käskyn takia
Wikin materiaali on kaikkien vapaasti käytettävissä Creative Commons 3.0 - nimi mainittava -lisenssin alaisuudessa. TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!

Muokataksesi tätä sivua vastaa alla olevaan kysymykseen (lisätietoja):

Peruuta Muokkausohjeet (avautuu uuteen ikkunaan)
Noudettu kohteesta ”https://www.linux.fi/wiki/Signaali