Mengapa hanya ada dua sinyal yang ditentukan pengguna?

11

Dalam daftar sinyal yang ditentukan dalam sistem linux, ada dua sinyal yang dinyatakan sebagai sinyal Buatan Pengguna ( SIGUSR1dan SIGUSR2). Sinyal lain akan dinaikkan atau ditangkap dalam situasi tertentu, tetapi SIGUSR dibiarkan untuk penggunaan aplikasi pengguna.

Jadi mengapa hanya ada dua sinyal?

Saeedn
sumber

Jawaban:

13

Secara historis, Unix hanya memiliki dua sinyal ini, tetapi sistem modern memiliki sinyal real-time SIGRTMIN... SIGRTMAX.

Karena semantik yang aneh dan tidak dapat diukur dari API sinyal, hampir tidak ada kasus penggunaan di mana sinyal akan lebih disukai daripada mekanisme komunikasi lain seperti pipa. Oleh karena itu, mengalokasikan nomor sinyal baru tidak pernah dianggap perlu.

CL.
sumber
Terima kasih. Dalam kasus saya, saya menangani SIGUSR1 untuk konfigurasi ulang. Itu berarti ketika admin ingin mengubah konfigurasi proses saya yang sedang berjalan, itu mengubah file config dan mengirimkan SIGUSR1 ke PID saya (lebih mudah menggunakan pipa di sini). Dan saya menggunakan SIGUSR2 untuk proses shutdown yang bersih. Itu tidak perlu bagi saya untuk menggunakan sinyal selain dua ini, tetapi beberapa fitur runtime dapat diimplementasikan dengan menangani sinyal yang ditentukan pengguna lain!
saeedn
2
@saeedn Mengapa Anda tidak menggunakan SIGTERM untuk shutdown proses bersih? Itu untuk apa. Banyak server lain menggunakan SIGHUP (yang hanya berarti pada proses interaktif) sebagai sinyal untuk memuat ulang file konfigurasi, jadi Anda dapat mempertimbangkan itu.
Random832
@ Random832 Anda benar, saya tahu apa yang Anda katakan. Tetapi masalah yang saya pikirkan adalah bagaimana jika saya kehabisan pilihan sinyal saya?
saeedn
1
Di mana saya bisa mendapatkan info lebih lanjut tentang sinyal SIGRTMIN ... SIGRTMAX? Di mana mereka didefinisikan ketika mereka digunakan?
Strubbl
6

Sinyal hanya menyediakan sarana komunikasi yang primitif. Secara khusus, tidak ada cara untuk melampirkan informasi apa pun kepada mereka. Penerima hanya tahu nomor sinyal, bukan identitas pengirim. Banyak sinyal dapat digabungkan menjadi satu. Mengingat semua pembatasan ini, tidak ada banyak tujuan berguna untuk sinyal.

Untuk tujuan yang lebih kompleks, gunakan cara interaksi yang lebih kompleks, seperti pipa atau soket.

Gilles 'SANGAT berhenti menjadi jahat'
sumber