اگر بخوایم کوتاه و ساده در مورد سیگنالها صحبت کنیم،علامت هایی هستند که به پروسهها فرستاده میشوند و پروسه مقصد واکنشی نشان میدهد.بعضی از سیگنالها میتوانند توسط پروسهها نادیده گرفته شوند و بعضی نه. طریقهی handle کردن سیگنالها نیز با توجه به زبانی که استفاده میکنید میتواند متفاوت باشد. در پایتون اینکار از طریق ماژول signal انجام میشود و در سی از طریق پروندهی سرآمد signal.h و تابع signal.جدول زیر فهرستی از سیگنالهای متداول را نشان میدهد، برای دیدن فهرستی کامل از آنها باید kill -l را ببینید.
شماره | نام سیگنال | توضیحات |
---|---|---|
1 | SIGHUP |
HUP مخفف Hangup به معنی آویزان ماندن یا معلق ماندن هست. استفاده از این سیگنال برمیگردد به روز هایی که مردم از طریق خط تلفن به رایانه های بزرگ وصل میشدند و از آنها استفاده میکردند. در آن روزها از این سیگنال استفاده میشد تا یک پروسه متوجه شود پایانهای که او را کنترل میکرد معلق شده است. الآن اکثر نرمافزارها و سرورها(برای مثال آپاچی) با دریافت این سیگنال، پرونده پیکرهبندی خود را از نو میخوانند. |
2 | SIGINT | میتوانید با Ctrl-C این سیگنال را با یک برنامه بفرستید، بصورت پیشفرض این سیگنال به پروسه خاتمه میدهد. |
9 | SIGKILL | این سیگنال در واقع به پروسه فرستاده نمیشود و در نتیجه نمیتواند آنرا نادیده بگیرد. زمانی که تلاش میکنید این سیگنال را به یک پروسه بفرستید، کرنل بلافاصله آن پروسه را خاتمه میدهد و پروسه زمانی برای خاتمه دادن ریسمانهایش یا ذخیرهی داده هایش ندارد. البته زمانی که پروسه به دیگر سیگنالها واکنش نمیدهد، میتوان از این برای خاتمهی اجباری استفاده کرد. |
15 | SIGTERM | این سیگنال برای خاتمه دادن یک پروسه استفاده میشود و تفاوت آن با سیگنال شماره ۹ این است که برنامه آنرا دریافت میکند و مثلا میتواند کارهای لازم را قبل از خاتمه انجام دهد و سپس بصورت امن خود را ببندد. |
18 | SIGCONT | این سیگنال برای برگرداندن پروسه از حالت مکث است. |
19 | SIGSTOP | این سیگنال نیز در واقع به پروسه ارسال نمیشود، با فرستادن این سیگنال به پروسه، کرنل اجرای پروسه را متوقف میکند اما آنرا خاتمه نمیدهد، یعنی مکث. برنامه مجددا میتواند با سیگنال ادامه یا سیگنال شماره ۱۸ به کار خود ادامه دهد. |
برای اطلاعات بیشتر صفحهی signal(7) را ببینید.
تحقیق یا مطلب مفیدی راجع به نوشتن برنامه اسمبلی در پردازنده های 64 بیتی دارین؟