Saya memiliki CD live yang menjalankan boot ke Linux dan menjalankan skrip Bash kecil. Script mencari dan menjalankan program kedua (yang biasanya merupakan biner C ++ yang dikompilasi).
Anda seharusnya dapat membatalkan program kedua dengan menekan Ctrl+ C. Apa yang harus terjadi adalah bahwa program kedua berhenti, dan skrip Bash terus menjalankan pembersihan. Apa yang sebenarnya terjadi adalah bahwa aplikasi utama dan skrip Bash berakhir. Yang merupakan masalah.
Jadi saya menggunakan trap
builtin untuk memberitahu Bash untuk mengabaikan SIGINT. Dan sekarang Ctrl+ Cmenghentikan aplikasi C ++, tetapi Bash terus menjalankannya. Bagus.
Oh ya ... Terkadang "aplikasi kedua" adalah skrip Bash yang lain. Dan dalam yang terjadi, Ctrl+ Csekarang tidak apa-apa pun .
Jelas pemahaman saya tentang cara kerja barang ini salah ... Bagaimana cara saya mengontrol proses mana yang mendapatkan SIGINT ketika pengguna menekan Ctrl+ C? Saya ingin mengarahkan sinyal ini ke satu proses tertentu saja .
set -m
. Ini sedikit lebih bersih dan sederhana daripada menggunakansetsid
setiap kali Anda menjalankan anak.