Langsung ke konten

Arsip

Sinyal

4 artikel
Linux 23 Sep 2026 4 min read

signalfd Mengonsumsi Sinyal yang Diblokir Melalui Read File Descriptor

signalfd Mengonsumsi Sinyal yang Diblokir Melalui Read File Descriptor signalfd() mengubah notifikasi sinyal terpilih menjadi record yang dapat dikonsumsi dengan read(). Sinyal pending yang cocok membuat descriptor menjadi readable, sehingga pemrosesan sinyal dapat berada pada jalur poll(), select(), atau epoll yang sama dengan socket, timer, dan descriptor lain. Descriptor tidak otomatis mengalihkan sinyal hanya karena mask miliknya memuat nomor sinyal tersebut. Aturan signal mask normal tetap berlaku. Pada susunan yang umum, sinyal terpilih diblokir agar tidak dikirim melalui disposition biasa, lalu sebuah signalfd membaca instance yang pending.

Linux 19 Sep 2026 4 min read

signalfd Mengubah Sinyal Linux Menjadi Event File Descriptor

Sinyal POSIX konvensional dapat menginterupsi thread pada hampir semua batas instruksi lalu memindahkan kontrol ke signal handler. Alur kontrol asinkron tersebut membatasi operasi yang aman di dalam handler dan menambah kerumitan pada program yang control plane utamanya sudah berjalan melalui epoll, poll, atau select. Linux signalfd() menyediakan antarmuka pengiriman yang berbeda. Proses memblokir sinyal tertentu melalui signal mask biasa, membuat signalfd untuk himpunan tersebut, lalu menerima sinyal pending dengan membaca record signalfd_siginfo terstruktur dari descriptor. Pada antarmuka kernel, objek tersebut tetap berupa sinyal; hanya proses konsumsinya yang dipindahkan ke I/O file descriptor biasa.

Rekayasa Perangkat Lunak 18 Sep 2026 6 min read

Linux signalfd Mengubah Sinyal Pending menjadi Read Descriptor

Linux signalfd memberi sinyal terpilih jalur konsumsi berbasis descriptor. Alih-alih memindahkan kontrol ke handler asinkron, proses dapat memblokir sinyal tersebut, mengaitkannya dengan objek signalfd, lalu mengonsumsi instance yang pending melalui read(). Descriptor ini juga dapat masuk ke poll(), select(), dan epoll, sehingga penerimaan sinyal dapat berada bersama socket, timer, dan sumber readiness lain. Antarmuka ini khusus Linux. Signal mask, aturan pending signal, dan operasi descriptor berasal dari semantik sinyal Linux serta POSIX pada bagian yang relevan; semuanya bukan properti bahasa C itu sendiri.

Rekayasa Perangkat Lunak 17 Sep 2026 5 min read

Linux signalfd Mengubah Sinyal Pending Menjadi Status Readable

Proses Linux dapat memblokir sinyal tertentu lalu menerimanya dengan membaca file descriptor alih-alih menjalankan handler asinkron. signalfd() membuat sinyal pending tersebut terlihat melalui antarmuka readiness yang sama dengan socket, pipe, dan descriptor lain, termasuk poll() dan epoll. Konversi ini bukan pengganti signal masking. Descriptor memiliki himpunan sinyal sendiri, sementara setiap thread tetap memiliki signal mask yang mengendalikan delivery biasa. Desain yang konsisten bergantung pada keselarasan kedua status tersebut. Descriptor mengamati sinyal pending dari himpunan tertentu signalfd baru dibuat dengan sebuah himpunan sinyal: