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 | Isyarat abort dari 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 |
Isyarat SIGKILL dan SIGSTOP tidak boleh 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 untuk SIGSYS , SIGXCPU , SIGXFSZ , dan (pada seni bina selain SPARC dan MIPS) SIGBUS adalah untuk menamatkan proses itu (tanpa pembuangan teras). (Pada beberapa Unice lain tindakan lalai untuk SIGXCPU dan SIGXFSZ adalah untuk menamatkan proses tanpa dump 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 ialah SIGINFO / SIGPWR pada alpha tetapi SIGLOST 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 Unices 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 notasi SIGRTMIN + 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 menggunakan sigqueue (2), nilai yang disertakan (sama ada integer atau penunjuk) boleh dihantar dengan isyarat. Sekiranya proses penerimaan menetapkan pengendali untuk isyarat ini menggunakan bendera SA_SIGACTION untuk sigaction (2) maka ia boleh mendapatkan data ini melalui medan si_value struktur siginfo_t yang diluluskan sebagai hujah kedua kepada pengendali. Selain itu, bidang si_pid dan si_uid 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. (Ie, isyarat yang bernombor rendah mempunyai keutamaan yang paling tinggi.)
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 melalui fail / proc / sys / kernel / rtsig-max . Fail yang berkaitan, / proc / sys / kernel / rtsig-max , boleh digunakan untuk mengetahui berapa banyak isyarat masa nyata yang sedang dipertaruhkan.
MELAKUKAN KEPADA
POSIX.1
Penting: Gunakan arahan lelaki ( % man ) untuk melihat bagaimana arahan digunakan pada komputer tertentu anda.