SORU
28 EKİM 2010, PERŞEMBE


Nasıl SIGINT diğer sonlandırma sinyalleri arasındaki ilişki nedir?

POSIX sistemlerinde, sonlandırma sinyalleri genellikle aşağıdaki sırada olmalıdır (MAN sayfaları ve POSIX Spec birçok göre):

  1. SIGTERM - kibarca sonlandırmak için bir süreç sor. İncelikle, tüm kaynakları (dosyalar, yuva, çocuk süreçleri, vb.), temizlik istifa eder geçici dosyaları silme ve benzeri.

  2. SİGQUİT - daha güçlü bir istek. Bu bir karar vermesini hantal, hala temizlik kaynaklara kesinlikle ihtiyaç temizleme, ama belki de değil, geçici dosyaları silme, belki yazmak hata ayıklama bilgilerini bir yerde; bazı sistem de bir çekirdek dökümü yazılı olacak (ne olursa olsun, eğer sinyal yakaladı app veya değil).

  3. SİGKİLL - en güçlü istek. Süreci bile bir şey yapmak istedi, ama sistem böyle olsun ya da olmasın işlem Temizle. Büyük ihtimalle bir çekirdek dökümü yazılır.

Nasıl SIGINT bu tablodaki yeri nedir? CLİ bir süreç genellikle kullanıcı CTRL C çarptığında SIGINT tarafından sonlandırıldı, ancak bir arka plan işlemi de SIGINT ÖLDÜRMEK yardımcı programı kullanarak sona erdirilebilir. Ben gözlük ya da başlık dosyaları ne olursa SIGINT SIGTERM daha fazla veya daha az güçlü ise veya SIGINT SIGTERM ve arasında herhangi bir fark varsa.

GÜNCELLEME:

Buldum sonlandırma sinyalleri en iyi tanımı, şimdiye kadar GNU LibC Documentation. SIGTERM ve SİGQUİT arasında istenilen bir fark olduğunu çok iyi açıklıyor.

SIGTERM hakkında diyor ki:

Kibarca bir programı sonlandırmak için sormak normal.

Ve SİGQUİT hakkında diyor ki:

[...] ve bir çekirdek dökümü üretir işlemi bittiğinde, program hata sinyali gibi. Program hata durumu “kullanıcı tarafından. tespit olarak düşünebilirsiniz [...] Temizlikleri belirli türde en iyi SİGQUİT işleme atlandı. Program, örneğin, Geçici Dosyalar, Geçici silerek diğer sonlandırma istekleri işlemek gerekir oluşturur dosyaları. Ancak kullanıcı bunları incelemek, böylece SİGQUİT için daha iyi olur, çekirdek dökümü ile birlikte.

Ve SİGHUP da yeterince açıklanmıştır. SİGHUP değil gerçekten bir sonlandırma sinyali, bunun anlamı "bağlantı" kullanıcı atıldı, bu yüzden uygulaması beklenmez kullanıcı okumak için başka çıkış (örneğin stdout/stderr çıktı) ve herhangi bir giriş bekliyoruz kullanıcı artık. Çoğu uygulamalar için bu daha iyi çıkın. Teoride bir uygulama aynı zamanda bir SİGHUP alındığında daemon moduna giriyor karar verebilir ve şimdi, bir arka plan işlemi olarak çalışır, yapılandırılmış bir günlük dosyası yazmak için çıktı. En cinleri zaten arka planda çalışan için, SİGHUP genellikle config dosyalarını düzenledikten sonra arka plan işlemleri göndermek için yapılandırma dosyalarını yeniden gözden geçirme, onlar erer.

Ancak orada bu sayfada SIGINT hiçbir faydalı açıklama, SIGTERM daha farklı bir şekilde CTRL C var tek SIGINT işlemek için bir neden gönderilir ki daha başka? Bunun sebebi ne olabilir? ve nasıl işleme farklı olurdu?

CEVAP
28 EKİM 2010, PERŞEMBE


SIGTERM ve SİGKİLL "bu" istekleri. sonlandırma işlemi, genel amaç için tasarlanmıştır SIGTERM (varsayılan) ve SİGKİLL (her zaman) işlem sonlandırma neden olur. SIGTERM işlem tarafından yakalanmış olabilir (eğer isterse kendi temizlik yapmak, böylece, örneğin), ya da tamamen görmezden geldi; ama SİGKİLL olamaz yakalanan veya göz ardı edilecek.

SIGINT ve SİGQUİT özellikle terminal istekleri için tasarlanmıştır: Özel Giriş karakteri bu sinyalleri (terminal kontrol ayarlarına bağlı olarak) oluşturmak için atanabilir. Varsayılan eylem için SIGINT aynı çeşit işlem sonlandırma olarak varsayılan eylem için SIGTERM ve değişmez eylem için SİGKİLL; varsayılan eylem için SİGQUİT de işlem sonlandırma, ama ek uygulama tanımlı eylemler ortaya çıkabilir, gibi nesil bir core dump. Ya da işlemek için gerekli yakalandı göz ardı edilebilir.

SİGHUP dediğiniz gibi, terminal bağlantı kesildi gösteren, yerine gibi bir sonlandırma sinyali olarak düşünülmüştür. Ama tekrar söylüyorum, eğer SİGHUP süreci yakalamak ya da bunu görmezden gelirse değil () için varsayılan eylemi SIGTERM vb gibi aynı şekilde işlemi sona erdirmek. .

Orada bir tablo POSIX tanımlar signal.h listeler çeşitli sinyaller ve onların varsayılan eylemler ve amaçlar, ve General Terminal Interface Bölüm içerir çok daha fazla ayrıntı üzerinde terminal ile ilgili sinyaller.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dope2111

    dope2111

    29 HAZİRAN 2009
  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • Marissah Simonini

    Marissah Sim

    25 HAZİRAN 2013