Linux menyokong kedua-dua POSIX isyarat dipercayai (selepas ini "isyarat standard") dan isyarat masa nyata POSIX.
Isyarat Standard
Linux menyokong isyarat standard disenaraikan di bawah. Beberapa nombor isyarat bergantung kepada arsitektur, seperti yang ditunjukkan dalam lajur "Nilai". (Di mana tiga nilai diberi, yang pertama biasanya sah untuk alpha dan sparc, satu pertengahan untuk i386, ppc dan sh, dan yang terakhir untuk mips.
A - menandakan bahawa isyarat tidak hadir pada seni bina yang bersesuaian.)
Penyertaan dalam lajur "Tindakan" jadual menentukan tindakan lalai untuk isyarat, seperti berikut:
Terma
Tindakan lalai adalah untuk menamatkan proses.
Ign
Tindakan lalai adalah mengabaikan isyarat.
Teras
Tindakan lalai adalah untuk menamatkan proses dan teras pembuangan.
Berhenti
Tindakan lalai adalah untuk menghentikan proses tersebut.
Mula-mula isyarat yang diterangkan dalam standard POSIX.1 asal.
Isyarat | Nilai | Tindakan | Komen |
atau kematian proses pengawalan | |||
SIGINT | 2 | Terma | Ganggu dari papan kekunci |
SIGQUIT | 3 | Teras | Berhenti dari papan kekunci |
SIGILL | 4 | Teras | Arahan tidak sah |
SIGABRT | 6 | Teras | Isikan isyarat daripada abort (3) |
SIGFPE | 8 | Teras | Pengecualian titik terapung |
SIGKILL | 9 | Terma | Membunuh isyarat |
SIGSEGV | 11 | Teras | Rujukan memori tidak sah |
SIGPIPE | 13 | Terma | Pecah paip: tulis ke paip tanpa pembaca |
SIGALRM | 14 | Terma | Isyarat pemasa dari penggera (2) |
SIGTERM | 15 | Terma | Isyarat penamatan |
SIGUSR1 | 30,10,16 | Terma | Isyarat yang ditentukan pengguna 1 |
SIGUSR2 | 31,12,17 | Terma | Isyarat yang ditentukan pengguna 2 |
SIGCHLD | 20,17,18 | Ign | Kanak-kanak berhenti atau ditamatkan |
SIGCONT | 19,18,25 | Teruskan jika berhenti | |
SIGSTOP | 17,19,23 | Berhenti | Hentikan proses |
SIGTSTP | 18,20,24 | Berhenti | Hentikan menaip pada tty |
SIGTTIN | 21,21,26 | Berhenti | input tty untuk proses latar belakang |
SIGTTOU | 22,22,27 | Berhenti | tty output untuk proses latar belakang |
IsyaratSIGKILL danSIGSTOP tidak dapat ditangkap, disekat, atau diabaikan.
Seterusnya isyarat tidak dalam piawaian POSIX.1 tetapi diterangkan dalam SUSv2 dan SUSv3 / POSIX 1003.1-2001.
Isyarat | Nilai | Tindakan | Komen |
SIGPOLL | Terma | Acara menarik (Sys V). Sinonim SIGIO | |
SIGPROF | 27,27,29 | Terma | Pemasa profil telah tamat tempoh |
SIGSYS | 12,-,12 | Teras | Hujah buruk terhadap rutin (SVID) |
SIGTRAP | 5 | Teras | Trace / breakpoint trap |
SIGURG | 16,23,21 | Ign | Keadaan segera di soket (4.2 BSD) |
SIGVTALRM | 26,26,28 | Terma | Jam penggera maya (4.2 BSD) |
SIGXCPU | 24,24,30 | Teras | Had masa CPU melebihi (4.2 BSD) |
SIGXFSZ | 25,25,31 | Teras | Had saiz fail melebihi (4.2 BSD) |
Sehingga dan termasuk Linux 2.2, tingkah laku lalai untukSIGSYS, SIGXCPU, SIGXFSZ, dan (pada seni bina selain daripada SPARC dan MIPS)SIGBUS adalah untuk menamatkan proses (tanpa pembuangan teras). (Pada beberapa Unices lain tindakan lalai untukSIGXCPU danSIGXFSZ adalah untuk menamatkan proses tanpa pembuangan teras.) Linux 2.4 mematuhi keperluan POSIX 1003.1-2001 untuk isyarat ini, menamatkan proses dengan dump teras.
Seterusnya pelbagai isyarat lain.
Isyarat | Nilai | Tindakan | Komen |
SIGEMT | 7,-,7 | Terma | |
SIGSTKFLT | -,16,- | Terma | Kesalahan stack pada coprocessor (tidak digunakan) |
SIGIO | 23,29,22 | Terma | I / O kini mungkin (4.2 BSD) |
SIGCLD | -,-,18 | Ign | Sintetik untuk SIGCHLD |
SIGPWR | 29,30,19 | Terma | Kegagalan kuasa (Sistem V) |
SIGINFO | 29,-,- | Sinonim bagi SIGPWR | |
SIGLOST | -,-,- | Terma | Kunci fail hilang |
SIGWINCH | 28,28,20 | Ign | Isyarat isyarat semula saiz (4.3 BSD, Matahari) |
SIGUNUSED | -,31,- | Terma | Isyarat yang tidak digunakan (akan menjadi SIGSYS) |
(Isyarat 29 ialahSIGINFO / SIGPWR pada alfa tetapiSIGLOST pada sparc.)
SIGEMT tidak dinyatakan dalam POSIX 1003.1-2001, tetapi tidak muncul pada kebanyakan Unice lain, di mana tindakan lalainya biasanya untuk menamatkan proses dengan dump teras.
SIGPWR (yang tidak dinyatakan dalam POSIX 1003.1-2001) biasanya diabaikan secara lalai pada Unice yang lain di mana ia muncul.
SIGIO (yang tidak dinyatakan dalam POSIX 1003.1-2001) diabaikan secara lalai pada beberapa Unice lain.
Isyarat masa nyata
Linux menyokong isyarat masa nyata seperti yang ditakrifkan pada POSIX.4 sambungan masa nyata (dan kini termasuk dalam POSIX 1003.1-2001). Linux menyokong 32 isyarat masa nyata, bernombor dari 32 (SIGRTMIN) hingga 63 (SIGRTMAX). (Program harus selalu merujuk kepada isyarat masa nyata menggunakan notasiSIGRTMIN+ n, kerana julat nombor isyarat masa nyata berbeza-beza di Unices.)
Tidak seperti isyarat standard, isyarat masa nyata tidak mempunyai makna yang telah dipratentukan: keseluruhan set isyarat masa nyata boleh digunakan untuk tujuan yang ditentukan aplikasi. (Perhatikan, bagaimanapun, pelaksanaan LinuxThreads menggunakan tiga isyarat masa nyata pertama.)
Tindakan lalai untuk isyarat masa nyata tidak dapat ditangani adalah untuk menamatkan proses penerimaan.
Isyarat masa nyata dibezakan dengan yang berikut:
- Pelbagai contoh isyarat masa nyata boleh dibariskan. Sebaliknya, jika beberapa contoh isyarat piawai disampaikan semasa isyarat tersebut disekat, maka hanya satu contoh yang disandarkan.
- Jika isyarat dihantar menggunakansigqueue(2), nilai yang disertakan (sama ada integer atau penunjuk) boleh dihantar dengan isyarat. Jika proses penerimaan menetapkan pengendali untuk isyarat ini menggunakanSA_SIGACTION bendera kesigasi(2) maka dapat memperoleh data ini melalui si_value bidang siginfo_t struktur diluluskan sebagai hujah kedua kepada pengendali. Tambahan pula, si_pid dan si_uid bidang struktur ini boleh digunakan untuk mendapatkan PID dan ID pengguna sebenar proses menghantar isyarat.
- Isyarat masa nyata dihantar dalam urutan yang terjamin. Isyarat masa nyata berganda jenis yang sama dihantar dalam susunan yang dihantar. Jika isyarat masa nyata yang berbeza dihantar ke suatu proses, ia akan dihantar bermula dengan isyarat terendah. (I.e., isyarat rendah bernombor mempunyai keutamaan tertinggi.)
Sekiranya kedua-dua isyarat piawai dan masa nyata sedang menunggu untuk proses, POSIX meninggalkannya yang tidak ditentukan yang dihantar terlebih dahulu. Linux, seperti banyak pelaksanaan lain, memberi keutamaan kepada isyarat standard dalam kes ini.
Menurut POSIX, satu perlaksanaan harus membenarkan sekurang-kurangnya _POSIX_SIGQUEUE_MAX (32) isyarat masa nyata untuk diharuskan untuk proses. Walau bagaimanapun, daripada meletakkan had setiap proses, Linux mengenakan had seluruh sistem ke atas bilangan isyarat masa nyata yang dihantarkan untuk semua proses.
Had ini boleh dilihat (dan dengan keistimewaan) diubah menerusi / proc / sys / kernel / rtsig-max fail. Fail berkaitan, / proc / sys / kernel / rtsig-max , boleh digunakan untuk mengetahui berapa banyak isyarat masa nyata yang sedang dipertaruhkan.
MELAKUKAN KEPADA
POSIX.1
Penting: Menggunakan lelaki perintah ( % lelaki ) untuk melihat bagaimana arahan digunakan pada komputer tertentu anda.