سیگنال os.signal
منتظر ماندن برای سیگنالهای سیستم عامل: توقف تمیز با Ctrl+C یا SIGTERM، فهمیدن تغییر اندازهی پایانه و تعیین اینکه کدام نخ سیگنال را بگیرد.
واردسازی سیستم عامل.سیگنال
نام آرگومانها شناسهی خود کد است و معادل فارسی ندارد؛ گونهها، کلیدواژهها و نام بستهها با معادل فارسی نوشته میشوند.
سیگنال پیام کوتاهی است که سیستم عامل به یک فرآیند میفرستد: Ctrl+C سیگنال SIGINT میفرستد، kill و محیطهای کانتینر SIGTERM میفرستند، و پایانه وقتی اندازهی پنجرهاش عوض شود SIGWINCH میفرستد. بیشتر سیگنالها به طور پیشفرض برنامه را همان لحظه میبندند، وسط هر چیزی که داشت مینوشت. بستهی سیگنال به برنامه اجازه میدهد سیگنالهایی را که برایش مهماند مثل رویدادهای معمولی بگیرد و در جای امنی از کد خودش به آنها پاسخ دهد.
الگو برای همهی کاربردها یکی است: سیگنالها را مسدود کنید، سپس منتظرشان بمانید. سیگنال مسدود تحویل داده نمیشود؛ در صف میماند تا نخی با انتظار سیگنال، انتظار یا انتظار با مهلت آن را بخواهد. مسدود کردن برای هر نخ جداست و نخ تازه ماسک نخ سازندهاش را کپی میکند، پس در ریشه و پیش از ساختن هر نخی مسدود کنید. آنوقت هیچ کارگری قطع نمیشود و همان یک نخی که منتظر است سیگنال را میگیرد.
مجموعهها، ماسکها و برداشتها تکههای حافظهایاند که بسته برایتان میسازد؛ هر کدام را پس از کار با حافظه.آزادسازی آزاد کنید. این بسته از دل کتابخانهی پایانهی رابطپایانه بیرون آمده که با آن هنگام تغییر اندازهی پنجره دوباره رسم میکند.
سیگنالها در لینوکس، اندروید، مک و BSD هستند. در ویندوز همهی تابعها جایگزینهای بیخطرند: تغییر اندازه پشتیبانی می شود نادرست است، مجموعهها پوچاند و انتظارها نتیجه نامعتبر برمیگردانند، پس یک برنامه همه جا کامپایل میشود و میتواند به پرسیدن دورهای برگردد.
توقف تمیز با Ctrl+C یا SIGTERM
SIGINT و SIGTERM را در یک مجموعه بگذارید، مسدودش کنید، کار را انجام دهید و سپس منتظر بمانید. انتظار سیگنال شمارهی سیگنال رسیده را برمیگرداند تا برنامه وضعیتش را ذخیره کند و به خواست خودش بیرون برود. نمونه با فرستادن به خود به خودش SIGTERM میفرستد تا خودش تمام شود؛ در برنامهی واقعی سیگنال از صفحهکلید یا از kill میآید.
// زبان: فارسی
واردسازی حافظه
واردسازی سیستم عامل.سیگنال
تابع ریشه:
توقف := سیگنال.مجموعه جدید()
دیرکن حافظه.آزادسازی(توقف)
_ := سیگنال.افزودن سیگنال(توقف، سیگنال.سیگنال وقفه)
_ := سیگنال.افزودن سیگنال(توقف، سیگنال.سیگنال خاتمه)
اگر وارونه سیگنال.مسدود کردن(توقف):
سرچاپ "سیگنالهای توقف مسدود نشدند"
برگشت 1
پایان
سرچاپ "در حال کار؛ برای توقف Ctrl+C بزنید یا kill را اجرا کنید"
_ := سیگنال.فرستادن به خود(سیگنال.سیگنال خاتمه)
سیگ := سیگنال.انتظار سیگنال(توقف)
اگر سیگ برابر سیگنال.سیگنال وقفه:
سرچاپ "Ctrl+C: ذخیره و خروج"
وگرنه سیگ برابر سیگنال.سیگنال خاتمه:
سرچاپ "SIGTERM: ذخیره و خروج"
وگرنه:
سرچاپ "انتظار ناموفق بود با وضعیت"، سیگ
برگشت 1
پایان
برگشت 0
پایانکارگرها کار میکنند، یک نخ منتظر است
اول مسدود کنید، بعد نخها را بسازید: ماسک را به ارث میبرند و سیگنال هرگز وسط کار یک کارگر نمیرسد. ریشه منتظر سیگنال میماند، سپس با یک پرچم اتمی (بستهی اتمی) به کارگرها میگوید بایستند و منتظر پایانشان میماند.
// زبان: فارسی
واردسازی حافظه
واردسازی همگام سازی
واردسازی اتمی
واردسازی سیستم عامل.سیگنال
ناپایا توقفشدن := اتمی.پرچم جدید(نادرست)
تابع کارگر(_ورودی: تهی*):
تا وارونه اتمی.گرفتن(توقفشدن):
همگام سازی.خواب میلی ثانیه(10)
پایان
سرچاپ "کارگر درخواست توقف را دید"
پایان
تابع ریشه:
توقف := سیگنال.مجموعه جدید()
دیرکن حافظه.آزادسازی(توقف)
_ := سیگنال.افزودن سیگنال(توقف، سیگنال.سیگنال خاتمه)
_ := سیگنال.مسدود کردن(توقف)
نخ := نخساز(کارگر، پوچ)
_ := سیگنال.فرستادن به خود(سیگنال.سیگنال خاتمه)
سرچاپ "ریشه سیگنال گرفت"، سیگنال.انتظار سیگنال(توقف)
اتمی.تنظیم(توقفشدن، درست)
نخپیوند(نخ)
اتمی.نابودسازی پرچم(توقفشدن)
سرچاپ "خروج تمیز"
پایانفهمیدن تغییر اندازهی پایانه
SIGWINCH به طور پیشفرض نادیده گرفته میشود و در مک سیگنال نادیده حتی اگر مسدود باشد دور ریخته میشود. برای همین نصب گرداننده تغییر اندازه گردانندهای میگذارد که کاری نمیکند و سیگنال را مسدود میکند تا تغییر اندازهها در صف بمانند. انتظار با مهلت با یک سقف زمانی منتظر میماند و میگذارد حلقه میان دو تغییر اندازه کارهای دیگری هم بکند. مقداری را که برگرداند در پایان به بازگردانی بدهید. سیگنال فقط میگوید اندازه شاید عوض شده و چند تغییر اندازه ممکن است یکی برسند، پس پس از هر بیدار شدن اندازهی تازه را با پایانه.اندازه() بخوانید.
// زبان: فارسی
واردسازی حافظه
واردسازی سیستم عامل.سیگنال
تابع ریشه:
اگر وارونه سیگنال.تغییر اندازه پشتیبانی می شود():
سرچاپ "اینجا SIGWINCH نیست: به جایش اندازه پایانه را بپرسید"
برگشت 0
پایان
قبلی := سیگنال.نصب گرداننده تغییر اندازه()
اگر قبلی برابر پوچ:
سرچاپ "گرداننده نصب نشد"
برگشت 1
پایان
مجموعه := سیگنال.مجموعه تغییر اندازه جدید()
خروجی := حافظه.تخصیص صفرشده(8 برگردان طبیعی۶۴)
سرچاپ "هنوز چیزی نیامده:"، سیگنال.انتظار با مهلت(مجموعه، خروجی، 100) برابر سیگنال.نتیجه اتمام مهلت
_ := سیگنال.بیدار کردن تغییر اندازه()
سرچاپ "پس از تغییر اندازه:"، سیگنال.انتظار با مهلت(مجموعه، خروجی، 1000) برابر سیگنال.نتیجه رسیدن
سرچاپ "شماره سیگنال:"، (خروجی برگردان صحیح۳۲*)[0]
حافظه.آزادسازی(خروجی)
حافظه.آزادسازی(مجموعه)
سرچاپ "بازگردانده شد:"، سیگنال.بازگردانی(سیگنال.سیگنال تغییر اندازه، قبلی)
حافظه.آزادسازی(قبلی)
برگشت 0
پایان| نیاز | استفاده |
|---|---|
| منتظر Ctrl+C یا SIGTERM ماندن | مجموعه جدید، افزودن سیگنال، مسدود کردن، انتظار سیگنال |
| انتظار با سقف زمانی | نصب، سپس انتظار با مهلت |
| پاسخ به تغییر اندازهی پایانه | نصب گرداننده تغییر اندازه، مجموعه تغییر اندازه جدید، انتظار تغییر اندازه یا انتظار با مهلت |
| بیدار کردن نخ منتظر | فرستادن به خود، یا برای SIGWINCH بیدار کردن تغییر اندازه |
| ذخیره و برگرداندن ماسک نخ | ماسک فعلی، تنظیم ماسک |
| فرستادن سیگنال به برنامهی دیگر | فرزند.فرستادن سیگنال در بستهی فرآیند |
| برنامهی تمامصفحهی پایانه | رابطپایانه که همهی اینها را برایتان انجام میدهد |
آنچه باید در نظر داشت:
- SIGKILL و SIGSTOP هرگز مسدود نمیشوند، نمیشود منتظرشان ماند و گرداننده نمیگیرند.
- در هر فرآیند هر بار فقط یک نخ میتواند منتظر باشد؛ منتظر دوم به جای نیمی از سیگنالها
نتیجه مشغولمیگیرد. - سیگنالهای همنوع روی هم جمع نمیشوند: دو SIGWINCH که وقتی یکی در صف است فرستاده شوند یکی میرسند.
- گردانندهای که به
نصبمیدهید روی هر نخی که سیگنال را بگیرد اجرا میشود و فقط کارهای امن در برابر سیگنال مجاز است. مسدود کردن و منتظر ماندن، مثل بالا، اصلا نیازی به گرداننده ندارد.
پایاها و متغیرها
سیگنال تغییر اندازه WinchSignal
پایا سیگنال تغییر اندازه: صحیح۳۲ = 28// زبان: فارسی
واردسازی حافظه
واردسازی سیستم عامل.سیگنال
تابع ریشه:
اگر وارونه سیگنال.تغییر اندازه پشتیبانی می شود():
سرچاپ "ویندوز: اندازه پایانه را بپرسید"
برگشت
پایان
قبلی := سیگنال.نصب گرداننده تغییر اندازه()
_ := سیگنال.مسدود کردن تغییر اندازه()
مجموعه := سیگنال.مجموعه تغییر اندازه جدید()
_ := سیگنال.بیدار کردن تغییر اندازه()
سرچاپ "بیدار شد با"، سیگنال.انتظار تغییر اندازه(مجموعه)، "که برابر است با"، سیگنال.سیگنال تغییر اندازه
حافظه.آزادسازی(مجموعه)
_ := سیگنال.بازگردانی(سیگنال.سیگنال تغییر اندازه، قبلی)
حافظه.آزادسازی(قبلی)
پایانوضعیتهای انتظار Wait…
انتظار و انتظار با مهلت برمیگردانند، و مقدارهای منفیای که انتظار سیگنال و انتظار تغییر اندازه وقتی سیگنالی نرسیده برمیگردانند. نتیجه رسیدن یک است، نتیجه اتمام مهلت صفر است و شکستها منفیاند: نتیجه نامعتبر (آرگومان نادرست، نبودن نصب پیش از انتظار با مهلت، یا ویندوز)، نتیجه شکست (فراخوانی سیستمی شکست خورد) و نتیجه مشغول (نخ دیگری از قبل منتظر است).| نام | انگلیسی | مقدار |
|---|---|---|
| نتیجه رسیدن | WaitArrived | 1 |
| نتیجه اتمام مهلت | WaitTimedOut | 0 |
| نتیجه نامعتبر | WaitInvalid | -1 |
| نتیجه شکست | WaitFailed | -2 |
| نتیجه مشغول | WaitBusy | -3 |
// زبان: فارسی
واردسازی حافظه
واردسازی سیستم عامل.سیگنال
تابع نادیده(_سیگ: صحیح):
_ := _سیگ
پایان
تابع ریشه:
سرچاپ "SIGINT"، سیگنال.سیگنال وقفه، "SIGTERM"، سیگنال.سیگنال خاتمه، "SIGKILL"، سیگنال.سیگنال کشتن
سرچاپ "بقیه در هر سیستم فرق دارند:"، سیگنال.سیگنال کاربر۱ بزرگتر 0، سیگنال.سیگنال کاربر۲ بزرگتر 0، سیگنال.سیگنال فرزند بزرگتر 0
سرچاپ "شمارههای ثابت:"، سیگنال.سیگنال قطع، سیگنال.سیگنال خروج، سیگنال.سیگنال لوله، سیگنال.سیگنال زنگ، سیگنال.سیگنال اندازه پنجره
سرچاپ "کنترل کار:"، سیگنال.سیگنال از سرگیری بزرگتر 0، سیگنال.سیگنال ایست بزرگتر 0، سیگنال.سیگنال توقف پایانه بزرگتر 0
قبلی := سیگنال.نصب(سیگنال.سیگنال کاربر۱، &نادیده)
مجموعه := سیگنال.مجموعه جدید()
_ := سیگنال.افزودن سیگنال(مجموعه، سیگنال.سیگنال کاربر۱)
خروجی := حافظه.تخصیص صفرشده(8 برگردان طبیعی۶۴)
سرچاپ "مهلت تمام شد:"، سیگنال.انتظار با مهلت(مجموعه، خروجی، 50) برابر سیگنال.نتیجه اتمام مهلت
_ := سیگنال.فرستادن به خود(سیگنال.سیگنال کاربر۱)
سرچاپ "رسید:"، سیگنال.انتظار(مجموعه، خروجی) برابر سیگنال.نتیجه رسیدن
_ := سیگنال.فرستادن به خود(سیگنال.سیگنال کاربر۱)
سرچاپ "شماره:"، سیگنال.انتظار سیگنال(مجموعه) برابر سیگنال.سیگنال کاربر۱
سرچاپ "آرگومان نادرست:"، سیگنال.انتظار(پوچ، خروجی) برابر سیگنال.نتیجه نامعتبر
سرچاپ "وضعیتها:"، سیگنال.نتیجه شکست کوچکتر 0، سیگنال.نتیجه مشغول کوچکتر 0
حافظه.آزادسازی(خروجی)
حافظه.آزادسازی(مجموعه)
سرچاپ "بازگردانده شد:"، سیگنال.بازگردانی(سیگنال.سیگنال کاربر۱، قبلی)
حافظه.آزادسازی(قبلی)
پایانسیگنال قطع SigHup
پایا سیگنال قطع: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال وقفه SigInt
پایا سیگنال وقفه: صحیح۳۲ = 2نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال خروج SigQuit
پایا سیگنال خروج: صحیح۳۲ = 3نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال کشتن SigKill
پایا سیگنال کشتن: صحیح۳۲ = 9نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال لوله SigPipe
پایا سیگنال لوله: صحیح۳۲ = 13نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال زنگ SigAlrm
پایا سیگنال زنگ: صحیح۳۲ = 14نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال خاتمه SigTerm
پایا سیگنال خاتمه: صحیح۳۲ = 15kill، مدیرهای سرویس و محیطهای کانتینر میفرستند.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال اندازه پنجره SigWinch
پایا سیگنال اندازه پنجره: صحیح۳۲ = 28سیگنال تغییر اندازه.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Winch.salam
سیگنال کاربر۱ SigUsr1
پایا سیگنال کاربر۱: صحیح۳۲ = 10نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال کاربر۲ SigUsr2
پایا سیگنال کاربر۲: صحیح۳۲ = 12نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال فرزند SigChld
پایا سیگنال فرزند: صحیح۳۲ = 17نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال از سرگیری SigCont
پایا سیگنال از سرگیری: صحیح۳۲ = 18نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال ایست SigStop
پایا سیگنال ایست: صحیح۳۲ = 19نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
سیگنال توقف پایانه SigTstp
پایا سیگنال توقف پایانه: صحیح۳۲ = 20نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
اندازه مجموعه سیگنال SignalSetSize
پایا اندازه مجموعه سیگنال: صحیح۳۲ = 128// زبان: فارسی
واردسازی حافظه
واردسازی سیستم عامل.سیگنال
تابع ریشه:
سرچاپ "اندازه مجموعه به بایت:"، سیگنال.اندازه مجموعه سیگنال بزرگتر 0
مجموعه := سیگنال.مجموعه جدید()
_ := سیگنال.افزودن سیگنال(مجموعه، سیگنال.سیگنال کاربر۱)
_ := سیگنال.افزودن سیگنال(مجموعه، سیگنال.سیگنال قطع)
سرچاپ "SIGUSR1 دارد:"، سیگنال.عضو مجموعه است(مجموعه، سیگنال.سیگنال کاربر۱)
_ := سیگنال.حذف سیگنال(مجموعه، سیگنال.سیگنال قطع)
سرچاپ "SIGHUP دارد:"، سیگنال.عضو مجموعه است(مجموعه، سیگنال.سیگنال قطع)
ذخیره := سیگنال.ماسک فعلی()
_ := سیگنال.مسدود کردن(مجموعه)
اکنون := سیگنال.ماسک فعلی()
سرچاپ "SIGUSR1 مسدود است:"، سیگنال.عضو مجموعه است(اکنون، سیگنال.سیگنال کاربر۱)
_ := سیگنال.رفع انسداد(مجموعه)
_ := سیگنال.تنظیم ماسک(ذخیره)
همه := سیگنال.مجموعه جدید()
سیگنال.پر کردن مجموعه(همه)
سرچاپ "مجموعه کامل SIGTERM دارد:"، سیگنال.عضو مجموعه است(همه، سیگنال.سیگنال خاتمه)
حافظه.آزادسازی(همه)
حافظه.آزادسازی(اکنون)
حافظه.آزادسازی(ذخیره)
حافظه.آزادسازی(مجموعه)
پایانتابعها
تغییر اندازه پشتیبانی می شود WinchSupported
تابع تغییر اندازه پشتیبانی می شود(): منطقیپایانه.اندازه() بپرسید.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Winch.salam
مجموعه تغییر اندازه جدید NewWinchSet
تابع مجموعه تغییر اندازه جدید(): تهی*حافظه.آزادسازی آزادش کنید. در ویندوز یا وقتی حافظه تمام شود پوچ است.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Winch.salam
نصب گرداننده تغییر اندازه InstallWinchHandler
تابع نصب گرداننده تغییر اندازه(): تهی*بازگردانی بدهید و بعد با حافظه.آزادسازی آزادش کنید. در ویندوز یا هنگام شکست پوچ است و چیزی تغییر نکرده است.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Winch.salam
نصب Install
تابع نصب(sig: صحیح، handler: تهی*): تهی*بازگردانی بدهید و سپس با حافظه.آزادسازی آزادش کنید. نصب دوبارهی همان گرداننده فقط یک صاحب به شمار میافزاید؛ گردانندهی دیگری برای سیگنالی که صاحب دارد با پوچ رد میشود. گرداننده روی هر نخی که سیگنال را بگیرد اجرا میشود و فقط کارهای امن در برابر سیگنال مجاز است: بدون تخصیص حافظه، بدون قفل و بدون چاپ.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
بازگردانی Restore
تابع بازگردانی(sig: صحیح، prev: تهی*): منطقینصب ثبت کرده، روی همان نخ نصبکننده بازمیگرداند. تا وقتی صاحبان دیگری ماندهاند فقط شمار صاحبان کم میشود و سیگنال برایشان مسدود میماند؛ آخرین صاحب گرداننده و ماسک اصلی را برمیگرداند. بازگردانی دوباره پس از آن کاری نمیکند و درست برمیگرداند. برداشت را آزاد نمیکند.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
مسدود کردن تغییر اندازه BlockWinch
تابع مسدود کردن تغییر اندازه(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Winch.salam
انتظار Wait
تابع انتظار(set: تهی*، out: تهی*): صحیحصحیح۳۲ در out[0] مینویسد و نتیجه رسیدن را برمیگرداند. اول سیگنالها را مسدود کنید تا به جای تحویل در صف بمانند. برای آرگومان پوچ و در ویندوز نتیجه نامعتبر، وقتی نخ دیگری منتظر است نتیجه مشغول و وقتی خود انتظار شکست بخورد نتیجه شکست برمیگرداند. هر بار فقط یک نخ میتواند منتظر باشد.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
انتظار با مهلت WaitTimeout
تابع انتظار با مهلت(set: تهی*، out: تهی*، millis: صحیح): صحیحانتظار است، اما پس از millis میلیثانیه دست میکشد و نتیجه اتمام مهلت برمیگرداند؛ صفر یک بار بدون انتظار نگاه میکند و مقدار منفی نتیجه نامعتبر است. سیگنال باید پیشتر با نصب نصب شده باشد. در مک مجموعه باید دقیقا یک سیگنال داشته باشد؛ لینوکس هر مجموعهای را میپذیرد.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
انتظار تغییر اندازه WaitWinch
تابع انتظار تغییر اندازه(set: تهی*): صحیحمجموعه تغییر اندازه جدید منتظر SIGWINCH میماند و با رسیدنش ۲۸ برمیگرداند، یا یک وضعیت منفی انتظار. فقط در ویندوز که SIGWINCH ندارد صفر برمیگرداند.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Winch.salam
بیدار کردن تغییر اندازه WakeWinch
تابع بیدار کردن تغییر اندازه(): منطقیانتظار تغییر اندازه است بیدار میکند؛ برای متوقف کردن نخ ناظر به کار میآید. در ویندوز یا اگر فرستادن شکست بخورد نادرست است.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Winch.salam
مجموعه جدید NewSet
تابع مجموعه جدید(): تهی*حافظه.آزادسازی آزادش کنید. در ویندوز یا وقتی حافظه تمام شود پوچ است.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Sets.salam
پر کردن مجموعه FillSet
تابع پر کردن مجموعه(set: تهی*)نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Sets.salam
افزودن سیگنال AddSignal
تابع افزودن سیگنال(set: تهی*، sig: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Sets.salam
حذف سیگنال DelSignal
تابع حذف سیگنال(set: تهی*، sig: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Sets.salam
عضو مجموعه است IsSignal
تابع عضو مجموعه است(set: تهی*، sig: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Sets.salam
مسدود کردن Block
تابع مسدود کردن(set: تهی*): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Sets.salam
رفع انسداد Unblock
تابع رفع انسداد(set: تهی*): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Sets.salam
تنظیم ماسک SetMask
تابع تنظیم ماسک(set: تهی*): منطقیماسک فعلی ذخیره شده. برای مجموعهی پوچ، در ویندوز یا هنگام شکست نادرست است.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Sets.salam
ماسک فعلی CurrentMask
تابع ماسک فعلی(): تهی*حافظه.آزادسازی آزادش کنید. در ویندوز یا هنگام شکست پوچ است.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Sets.salam
انتظار سیگنال WaitSignal
تابع انتظار سیگنال(set: تهی*): صحیحانتظار. اول سیگنالها را مسدود کنید. سادهترین راه برای منتظر ماندن Ctrl+C یا SIGTERM همین است.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam
فرستادن به خود Raise
تابع فرستادن به خود(sig: صحیح): منطقیانتظار میماند. برای شمارهی نامثبت، در ویندوز یا اگر فرستادن شکست بخورد نادرست است.نمونهی این مورد همراه با موارد بالاتر آمده است: os-signal-Wait.salam