GNU/Linux >> Belajar Linux >  >> Linux

Kapan setsid() berguna, atau mengapa kita perlu mengelompokkan proses di Linux?

Sesi adalah serangkaian proses yang berbagi terminal pengontrol. setsid berguna saat Anda ingin memulai sesi baru, karena Anda sudah mulai terhubung ke terminal baru -- seperti saat memulai shell di dalam terminal emulator -- atau Anda menginginkan daemon (yang tidak Anda inginkan dikaitkan dengan terminal pengontrol).

Penjelasan terbaik yang saya tahu tentang aspek ini ada di R.W. Stevens Pemrograman tingkat lanjut di lingkungan Unix .


Why do we need to group processes? Pertimbangkan situasi di mana Anda ingin menutup dengan bersih, dan itu termasuk mengirimkan sinyal kepada anak-anak Anda. Ada kondisi balapan yang melekat:SIGCHLD belum diterima, jadi Anda tahu anak itu masih hidup. Jadi Anda mengirim sinyal. Tetapi anak berhenti sebelum sinyal dikirim dan proses lain (tidak terkait) dimulai dan mendapatkan pid yang sama dengan anak yang dikirimi sinyal. Sinyal kemudian menuju ke proses baru yang tidak terkait. Ini buruk. Jadi, daripada mengirim sinyal ke pid tertentu, Anda memberi sinyal ke grup proses. Saat anak meninggal dan proses baru dimulai dengan pid asli, proses baru tidak bagian dari grup proses dan masalah yang dijelaskan di atas dihindari.


Linux
  1. 30 Latihan Proses Linux Untuk Sysadmin

  2. Linux – Kapan Saya Tidak Harus Membunuh -9 Proses?

  3. Linux – Proses Init:Leluhur Semua Proses?

  1. Linux – Bisakah Ctrl+c Mengirim Sinyal Tanda Ke Beberapa Proses?

  2. UNIX / Linux:3 Cara Mengirim Sinyal ke Proses

  3. Dasar-Dasar Sinyal Linux – Bagian I

  1. Mengapa kebutuhan saya akan kontrol membuat saya beralih ke Linux

  2. Mengapa kita membutuhkan file .so.1 di Linux?

  3. Apa yang terjadi saat mengirim SIGKILL ke Proses Zombie di Linux?