Linux mendukung kedua sinyal POSIX yang dapat diandalkan (selanjutnya disebut "sinyal standar") dan sinyal POSIX real-time.
Sinyal Standar
Linux mendukung sinyal standar yang tercantum di bawah ini. Beberapa nomor sinyal bergantung pada arsitektur, seperti yang ditunjukkan pada kolom "Nilai". (Di mana tiga nilai diberikan, yang pertama biasanya valid untuk alpha dan sparc, yang tengah untuk i386, ppc dan sh, dan yang terakhir untuk mips.
A - menunjukkan bahwa sinyal tidak ada pada arsitektur yang sesuai.)
Entri dalam kolom "Tindakan" pada tabel menentukan tindakan default untuk sinyal, sebagai berikut:
Istilah
Tindakan default adalah menghentikan proses.
Ign
Tindakan standar adalah mengabaikan sinyal.
Inti
Tindakan default adalah menghentikan proses dan membuang inti.
Berhenti
Tindakan default adalah menghentikan proses.
Pertama-tama sinyal yang dijelaskan dalam standar POSIX.1 asli.
Sinyal | Nilai | Tindakan | Komentar |
atau kematian proses pengendalian | |||
SIGINT | 2 | Istilah | Interupsi dari keyboard |
SIGQUIT | 3 | Inti | Keluar dari keyboard |
SIGILL | 4 | Inti | Instruksi Illegal |
SIGABRT | 6 | Inti | Abort sinyal dari batalkan (3) |
SIGFPE | 8 | Inti | Pengecualian floating point |
SIGKILL | 9 | Istilah | Bunuh sinyal |
SIGSEGV | 11 | Inti | Referensi memori tidak valid |
SIGPIPE | 13 | Istilah | Pipa rusak: menulis ke pipa tanpa pembaca |
SIGALRM | 14 | Istilah | Sinyal pengatur waktu dari alarm (2) |
SIGTERM | 15 | Istilah | Sinyal pemutusan |
SIGUSR1 | 30,10,16 | Istilah | Sinyal yang ditentukan pengguna 1 |
SIGUSR2 | 31,12,17 | Istilah | Sinyal yang ditentukan pengguna 2 |
SIGCHLD | 20,17,18 | Ign | Anak berhenti atau dihentikan |
SIGCONT | 19,18,25 | Lanjutkan jika dihentikan | |
SIGSTOP | 17,19,23 | Berhenti | Hentikan proses |
SIGTSTP | 18,20,24 | Berhenti | Berhenti mengetik di tty |
SIGTTIN | 21,21,26 | Berhenti | masukan tty untuk proses latar belakang |
SIGTTOU | 22,22,27 | Berhenti | tty output untuk proses latar belakang |
Sinyal SIGKILL dan SIGSTOP tidak dapat ditangkap, diblokir, atau diabaikan.
Selanjutnya sinyal tidak dalam standar POSIX.1 tetapi dijelaskan dalam SUSv2 dan SUSv3 / POSIX 1003.1-2001.
Sinyal | Nilai | Tindakan | Komentar |
SIGPOLL | Istilah | Acara yang bisa diserbuki (Sys V). Sinonim dari SIGIO | |
SIGPROF | 27,27,29 | Istilah | Pengatur waktu profil kedaluwarsa |
SIGSYS | 12, -, 12 | Inti | Argumen buruk ke rutin (SVID) |
SIGTRAP | 5 | Inti | Trace / breakpoint trap |
SIGURG | 16,23,21 | Ign | Kondisi mendesak pada soket (4.2 BSD) |
SIGVTALRM | 26,26,28 | Istilah | Jam alarm virtual (4.2 BSD) |
SIGXCPU | 24,24,30 | Inti | Batas waktu CPU terlampaui (4.2 BSD) |
SIGXFSZ | 25,25,31 | Inti | Batas ukuran file terlampaui (4.2 BSD) |
Hingga dan termasuk Linux 2.2, perilaku default untuk SIGSYS , SIGXCPU , SIGXFSZ , dan (pada arsitektur selain SPARC dan MIPS) SIGBUS adalah untuk mengakhiri proses (tanpa dump inti). (Pada beberapa Unices lain, tindakan default untuk SIGXCPU dan SIGXFSZ adalah untuk menghentikan proses tanpa dump inti.) Linux 2.4 memenuhi persyaratan POSIX 1003.1-2001 untuk sinyal-sinyal ini, mengakhiri proses dengan dump inti.
Berikutnya berbagai sinyal lainnya.
Sinyal | Nilai | Tindakan | Komentar |
SIGEMT | 7, -, 7 | Istilah | |
SIGSTKFLT | -, 16, - | Istilah | Tumpukan kesalahan pada coprocessor (tidak digunakan) |
SIGIO | 23,29,22 | Istilah | I / O sekarang mungkin (4.2 BSD) |
SIGCLD | -, -, 18 | Ign | Sinonim untuk SIGCHLD |
SIGPWR | 29,30,19 | Istilah | Kegagalan daya (Sistem V) |
SIGINFO | 29, -, - | Sinonim untuk SIGPWR | |
SIGLOST | -, -, - | Istilah | Kunci file hilang |
SIGWINCH | 28,28,20 | Ign | Sinyal pengubahan ukuran jendela (4.3 BSD, Sun) |
SIGUNUS | -, 31, - | Istilah | Sinyal yang tidak digunakan (akan menjadi SIGSYS) |
(Sinyal 29 adalah SIGINFO / SIGPWR pada alpha tetapi SIGLOST pada sparc.)
SIGEMT tidak ditentukan dalam POSIX 1003.1-2001, tetapi tidak pernah muncul pada kebanyakan Unices lainnya, di mana tindakan defaultnya biasanya untuk mengakhiri proses dengan dump inti.
SIGPWR (yang tidak ditentukan dalam POSIX 1003.1-2001) biasanya diabaikan secara default pada Unix lain di mana ia muncul.
SIGIO (yang tidak ditentukan dalam POSIX 1003.1-2001) diabaikan secara default pada beberapa Unices lainnya.
Sinyal real-time
Linux mendukung sinyal real-time sebagaimana aslinya didefinisikan dalam POSIX.4 ekstensi waktu nyata (dan sekarang termasuk dalam POSIX 1003.1-2001). Linux mendukung 32 sinyal real-time, dari 32 ( SIGRTMIN ) hingga 63 ( SIGRTMAX ). (Program harus selalu mengacu pada sinyal real-time menggunakan notasi SIGRTMIN + n, karena rentang jumlah sinyal real-time bervariasi di seluruh Unices.)
Tidak seperti sinyal standar, sinyal real-time tidak memiliki arti yang telah ditentukan: seluruh rangkaian sinyal real-time dapat digunakan untuk tujuan yang ditentukan aplikasi. (Perhatikan, bagaimanapun, bahwa implementasi LinuxThreads menggunakan tiga sinyal real-time pertama.)
Tindakan default untuk sinyal real-time yang tidak tertangani adalah mengakhiri proses penerimaan.
Sinyal real-time dibedakan sebagai berikut:
- Beberapa contoh dari sinyal real-time dapat diantrekan. Sebaliknya, jika beberapa contoh dari sinyal standar dikirimkan ketika sinyal tersebut saat ini diblokir, maka hanya satu contoh yang diantrekan.
- Jika sinyal dikirim menggunakan sigqueue (2), nilai yang menyertainya (baik integer atau pointer) dapat dikirim dengan sinyal. Jika proses penerimaan menetapkan handler untuk sinyal ini menggunakan flag SA_SIGACTION ke sigaction (2) maka dapat memperoleh data ini melalui bidang si_value dari struktur siginfo_t yang dikirimkan sebagai argumen kedua ke handler. Selanjutnya, bidang si_pid dan si_uid struktur ini dapat digunakan untuk mendapatkan PID dan ID pengguna nyata dari proses pengiriman sinyal.
- Sinyal real-time dikirim dalam pesanan yang terjamin. Beberapa sinyal real-time dari jenis yang sama dikirim dalam urutan yang dikirim. Jika sinyal real-time yang berbeda dikirim ke suatu proses, sinyal tersebut dikirimkan mulai dengan sinyal bernomor terendah. (Yaitu, sinyal bernomor rendah memiliki prioritas tertinggi.)
Jika kedua sinyal standar dan real-time menunggu proses, POSIX meninggalkannya tidak ditentukan yang dikirim lebih dulu. Linux, seperti banyak implementasi lainnya, memberikan prioritas pada sinyal standar dalam kasus ini.
Menurut POSIX, sebuah implementasi harus mengizinkan setidaknya _POSIX_SIGQUEUE_MAX (32) sinyal waktu nyata untuk diantrekan ke suatu proses. Namun, daripada menempatkan batas per-proses, Linux menerapkan batas seluruh sistem pada jumlah antrian sinyal waktu nyata untuk semua proses.
Batas ini dapat dilihat (dan dengan hak istimewa) diubah melalui file / proc / sys / kernel / rtsig-max . File yang terkait, / proc / sys / kernel / rtsig-max , dapat digunakan untuk mencari tahu berapa banyak sinyal real-time yang sedang diantrekan.
MENYAMPAIKAN
POSIX.1
Penting: Gunakan perintah man ( % man ) untuk melihat bagaimana perintah digunakan pada komputer khusus Anda.