Başka bir soruda bu yorum ile şaşırdım :
USR1 sinyalini başladıktan hemen sonra (yani bir bash betiğinde, başlattıktan sonraki satır) göndermek aslında onu sonlandıracaktır.
Nedenini açıklayan var mı?
Başka bir soruda bu yorum ile şaşırdım :
USR1 sinyalini başladıktan hemen sonra (yani bir bash betiğinde, başlattıktan sonraki satır) göndermek aslında onu sonlandıracaktır.
Nedenini açıklayan var mı?
Yanıtlar:
Her sinyalin bir "varsayılan düzen" vardır - bir işlem bu sinyali aldığında varsayılan olarak ne yapar? signal(7)
Man sayfasında onları listeleyen bir tablo var :
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
...
SIGUSR1 30,10,16 Term User-defined signal 1
SIGUSR2 31,12,17 Term User-defined signal 2
SIGUSR1
ve SIGUSR2
her ikisinin de varsayılan eylemi vardır Term
- işlem sonlandırılır. dd
sinyali yakalamak ve onunla faydalı bir şey yapmak için bir işleyiciyi kaydeder, ancak çok hızlı sinyal verirseniz, bu işleyiciyi kaydetmek için henüz zamanı olmamıştır, bu nedenle varsayılan eylem gerçekleşir
strace
bir kabuk betiğinde çıktı yakalama ve ayrıştırma gibi gülünç bir şeyin yanında …)
{ dd if=/dev/zero of=/dev/null & }; kill -USR1 $!; jobs; sleep 1; jobs
tarif ettiğiniz efekti yeniden üretmek için.