Linux
17 Sep 2026
4 min read
O_CLOEXEC Menutup Descriptor Secara Atomik Saat exec
File descriptor yang dibuat tanpa status close-on-exec dapat ikut terbawa ke program baru selama celah konkurensi yang sangat sempit. Pada proses Linux multithread, mengatur FD_CLOEXEC lewat pemanggilan fcntl() setelah descriptor dibuat meninggalkan interval antara pembuatan descriptor dan pembaruan flag tersebut. O_CLOEXEC menghilangkan operasi dua tahap itu. Kernel membuat descriptor dengan flag close-on-exec yang sudah aktif sejak awal, sehingga thread lain tidak dapat melihat kondisi antara ketika descriptor sudah ada tetapi masih bisa diwariskan melalui execve() yang berhasil.