Signal ကို - Linux / Unix စစ်ဌာနချုပ်

Linux ကို POSIX ယုံကြည်စိတ်ချရသောအချက်ပြမှုများ (လျှော့ "စံအချက်ပြမှုများ") နှင့် POSIX Real-time အချက်ပြမှုများကိုနှစ်ဦးစလုံးထောက်ခံပါတယ်။

စံနေရင်မြန်အောင်

Linux ကို အောက်တွင်ဖော်ပြထားသောစံအချက်ပြမှုများကိုထောက်ခံပါတယ်။ သည် "Value ကို" ကော်လံထဲမှာညွှန်ပြအဖြစ်အများအပြား signal ကိုနံပါတ်များ, ဗိသုကာမှီခိုဖြစ်ကြသည်။ သုံးတန်ဖိုးများကိုပေးအပ်ထားတယ်အဘယ်မှာ (ပထမဦးဆုံးတဦးတည်း alpha နှင့် sparc, i386, ppc နှင့် sh များအတွက်အလယ်တန်းတဦးတည်းနှင့် mips နောက်ဆုံးတဦးတည်းအဘို့အများအားဖြင့်တရားဝင်သည်။

တစ်ဦးက - တစ်အချက်ပြသက်ဆိုင်ရာဗိသုကာအပေါ်ပျက်ကွက်ကြောင်းရည်ညွှန်း) ။

အောက်မှာဖေါ်ပြတဲ့အတိုင်းစားပွဲ၏ "လှုပ်ရှားမှု" ကော်လံအတွက် posts များ, အ signal ကိုများအတွက် default အနေနဲ့အရေးယူဆောင်ရွက်မှုကိုသတ်မှတ်:

သက်တမ်း

default အရေးယူလုပ်ငန်းစဉ်ရပ်ဆိုင်းဖို့ဖြစ်ပါတယ်။

IGN

default လုပ်ဆောင်ချက်ကို signal ကိုလျစ်လျူရှုဖို့ဖြစ်ပါတယ်။

core

default အရေးယူလုပ်ငန်းစဉ်အဆုံးသတ်ခြင်းနှင့် core ကိုအရေးပေါ်သိမ်းထားဖို့ဖြစ်ပါတယ်။

ရပ်

default အရေးယူလုပ်ငန်းစဉ်ကိုရပ်တန့်ဖို့ပါပဲ။

ပထမဦးစွာမူလ POSIX.1 စံမှာဖော်ပြထားတဲ့အချက်ပြ။

signal အဘိုး လှုပ်ရှားမှု မှတ်ချက်
သို့မဟုတ်ဖြစ်စဉ်ကိုထိန်းချုပ်သေဆုံး
SIGINT 2 သက်တမ်း ကီးဘုတ်ကနေကြားဖြတ်
SIGQUIT 3 core ကီးဘုတ်ကနေနုတ်ထွက်
SIGILL 4 core တရားမဝင်ညွှန်ကြားချက်
SIGABRT 6 core (3) ဖျက်သိမ်းသည်ကနေ signal ကို abort
SIGFPE 8 core Floating အမှတ်ခြွင်းချက်
SIGKILL 9 သက်တမ်း signal ကိုသတ်ပစ်
SIGSEGV 11 core မှားနေသောမှတ်ဉာဏ်ကိုကိုးကား
SIGPIPE 13 သက်တမ်း ကျိုးပိုက်: အဘယ်သူမျှမစာဖတ်သူများနှင့်အတူပိုက်ထံစာရေး
SIGALRM 14 သက်တမ်း နှိုးစက်ကနေ timer signal ကို (2)
SIGTERM 15 သက်တမ်း ရပ်စဲ signal ကို
SIGUSR1 30,10,16 သက်တမ်း user-defined signal ကို 1
SIGUSR2 31,12,17 သက်တမ်း user-defined signal ကို 2
SIGCHLD 20,17,18 IGN ကလေးသူငယ်ရပ်တန့်သို့မဟုတ်ရပ်စဲ
SIGCONT 19,18,25 ရပ်တန့်ပါလျှင် Continue
SIGSTOP 17,19,23 ရပ် stop ဖြစ်စဉ်ကို
SIGTSTP 18,20,24 ရပ် stop TTY မှာရိုက်
SIGTTIN 21,21,26 ရပ် နောက်ခံလုပ်ငန်းစဉ်အတွက် TTY input ကို
SIGTTOU 22,22,27 ရပ် နောက်ခံလုပ်ငန်းစဉ်အတွက် TTY output ကို

အဆိုပါအချက်ပြမှုများ SIGKILL နှင့် SIGSTOP, ဖမ်းမိပိတ်ဆို့, ဒါမှမဟုတ်လျစ်လျူရှုမရနိုင်ပါ။

အဆိုပါ POSIX.1 စံအတွက်အချက်ပြမှုများမဟုတ် Next ကိုဒါပေမယ့် SUSv2 နှင့် SUSv3 / POSIX 1003.1-2001 မှာဖော်ပြထားတဲ့။

signal အဘိုး လှုပ်ရှားမှု မှတ်ချက်
SIGPOLL သက်တမ်း Pollable ဖြစ်ရပ် (sys V ကို) ။ SIGIO ၏တစ်လုံးကိုအဓိပ္ပာယ်တူ synonym
SIGPROF 27,27,29 သက်တမ်း ကို timer နေရာမှာသက်တမ်းကုန်
SIGSYS 12 - 12 core လုပ်ရိုးလုပ်စဉ်မှမကောင်းတဲ့အငြင်းအခုံ (SVID)
SIGTRAP 5 core သဲလွန်စ / breakpoints အားထောင်ချောက်
SIGURG 16,23,21 IGN socket ပေါ်အရေးပေါ်အခြေအနေ (4.2 BSD)
SIGVTALRM 26,26,28 သက်တမ်း virtual နှိုးစက်နာရီ (4.2 BSD)
SIGXCPU 24,24,30 core ကျော်လွန်သွား CPU ကိုအချိန်ကန့်သတ် (4.2 BSD)
SIGXFSZ 25,25,31 core ဖိုင်အရွယ်အစားကန့်သတ် (4.2 BSD) ကိုကျော်လွန်

မှတက်နှင့် Linux 2.2, SIGSYS များအတွက် default အမူအကျင့်, SIGXCPU, SIGXFSZ နှင့်အပါအဝင် (SPARC နှင့် MIPS ထက်အခြားဗိသုကာအပေါ်) SIGBUS (က core ကိုအမှိုက်ပုံမပါဘဲ) လုပ်ငန်းစဉ်ရပ်ဆိုင်းဖို့ဖြစ်တယ်။ (အချို့နဲ့အခြား Unices တွင် SIGXCPU နှင့် SIGXFSZ များအတွက် default အနေနဲ့အရေးယူတဲ့အဓိကအမှိုက်ပုံမရှိဘဲလုပ်ငန်းစဉ်ရပ်ဆိုင်းဖို့ဖြစ်ပါတယ်။ ) Linux ကိုဤအအချက်ပြမှုများများအတွက် POSIX 1003.1-2001 လိုအပ်ချက်များ 2.4 ညီတစ်ဦး core ကိုအမှိုက်ပုံနှင့်အတူလုပ်ငန်းစဉ်ရပ်စဲ။

Next ကိုအမျိုးမျိုးသောအခြားအချက်ပြ။

signal အဘိုး လှုပ်ရှားမှု မှတ်ချက်
SIGEMT 7 - 7 သက်တမ်း
SIGSTKFLT - 16 - သက်တမ်း (အသုံးမပြုတဲ့) coprocessor အပေါ်အပြစ်ရှာသီးနှံများကိုပုံ
SIGIO 23,29,22 သက်တမ်း ငါ / ယခုဖြစ်နိုင်သောအို (4.2 BSD)
SIGCLD -, -, 18 IGN SIGCHLD များအတွက်တစ်ဦးကတစ်လုံးကိုအဓိပ္ပာယ်တူ synonym
SIGPWR 29,30,19 သက်တမ်း Power ကပျက်ကွက် (System ကို V)
SIGINFO 29 - - SIGPWR များအတွက်တစ်ဦးကတစ်လုံးကိုအဓိပ္ပာယ်တူ synonym
SIGLOST - - - သက်တမ်း ပျောက် file ကို lock
SIGWINCH 28,28,20 IGN window အရွယ်အစားပြောင်း signal ကို (4.3 BSD, ဂနွေ)
SIGUNUSED - 31 - သက်တမ်း အသုံးမပြုတဲ့ signal ကို (SIGSYS ဖြစ်လိမ့်မည်)

(Signal 29 sparc တခုတခုအပေါ်မှာ alpha ပေမယ် SIGLOST အပေါ် SIGINFO / SIGPWR ဖြစ်ပါသည်။ )

SIGEMT POSIX 1003.1-2001 အတွက်သတ်မှတ်ထားသောပေမယ် neverthless င်း၏ပုံသေလုပ်ဆောင်ချက်အဓိကအမှိုက်ပုံနှင့်အတူလုပ်ငန်းစဉ်ရပ်ဆိုင်းဖို့ပုံမှန်အားသည်အဘယ်မှာရှိပါဆုံးကတခြား Unices, ပေါ်မပေးပါ။

(POSIX 1003.1-2001 အတွက်သတ်မှတ်ထားသောမဟုတ်သော) SIGPWR ပုံမှန်အားကြောင့်ပေါ်လာသည်ဘယ်မှာရှိသူများသည်အခြား Unices အပေါ်ပုံမှန်အားဖြင့်လစ်လျူရှုသည်။

(POSIX 1003.1-2001 အတွက်သတ်မှတ်ထားသောမဟုတ်သော) SIGIO အခြား Unices အပေါ်ပုံမှန်အားဖြင့်လစ်လျူရှုသည်။

real-time နေရင်မြန်အောင်

Linux ကို ပု POSIX.4 Real-time extension များအတွက်မူလကသတ်မှတ်ထားသောအဖြစ် Real-time အချက်ပြမှုများကို support (နှင့်ယခု POSIX 1003.1-2001 တွင်ထည့်သွင်း) ။ Linux ကို 63 မှ 32 (SIGRTMIN) (SIGRTMAX) မှရေတွက် 32 Real-time အချက်ပြမှုများ, ထောက်ခံပါတယ်။ (Real-time signal ကိုဂဏန်းများ၏အကွာအဝေး Unices တလွှားကွာခြားကတည်းက Programs ကိုအမြဲသင်္ကေတ SIGRTMIN + N ကိုအသုံးပြုပြီး Real-time အချက်ပြမှုများကိုရည်ညွှန်းသင့်ပါတယ်။ )

စံအချက်ပြမှုများမတူဘဲ, Real-time အချက်ပြမှုများကိုအဘယ်သူမျှမကြိုတင်သတ်မှတ်ထားအဓိပ္ပါယ်များရှိသည်: Real-time အချက်ပြမှုများ၏တစ်ခုလုံးကို set ကိုလျှောက်လွှာ-သတ်မှတ်ထားသောရည်ရွယ်ချက်များအတွက်အသုံးပြုနိုင်ပါတယ်။ (ထို LinuxThreads အကောင်အထည်ဖော်မှုပထမသုံး Real-time အချက်ပြမှုများကိုအသုံးပြုကြောင်း, သို့သော်သတိပြုပါ။ )

တစ်ဦး unhandled Real-time signal ကိုများအတွက် default အနေနဲ့အရေးယူဆောင်ရွက်မှုလက်ခံရရှိသောဖြစ်စဉ်ကိုရပ်ဆိုင်းဖို့ဖြစ်ပါတယ်။

real-time အချက်ပြမှုများကိုအောက်ပါအားဖြင့်ခွဲခြားထားပါသည်:

  1. Real-time အချက်ပြမှုများ၏အကွိမျမြားစှာသာဓကတန်းစီနိုင်ပါသည်။ ကြောင်းအချက်ပြလက်ရှိပိတ်ဆို့နေဆန့်ကျင်ဘက်အားဖြင့်လျှင်တစ်ဦးစံ signal ကိုမျိုးစုံကိုသာဓကထို့နောက်တစ်ဦးတည်းသာဥပမာအားဖြင့်တန်းစီသည်ကိုအပ်ရသည်။
  2. အဆိုပါအချက်ပြ sigqueue (2) သုံးပြီးပို့လျှင်တစ်ခုပူးတှဲပါတန်ဖိုး (တစ်ခုကိန်းတစ်ခုသို့မဟုတ် pointer ကိုဖြစ်စေ) က signal ကိုအတူစေလွှတ်တော်မူနိုင်ပါသည်။ လက်ခံရရှိသောဖြစ်စဉ်ကို sigaction ဖို့ SA_SIGACTION အလံသုံးပြီးဒီ signal ကိုများအတွက် handler ကိုတည်စေခဲ့လျှင် (2) ထို့နောက်၎င်းသည် handler ကိုမှဒုတိယအငြင်းအခုံအဖြစ်ရှောက်သွားသောအခါ siginfo_t ဖွဲ့စည်းပုံ၏ si_value လယ်ပြင်ကနေတဆင့်ဒီဒေတာကိုရယူနိုငျပါသညျ။ ထို့အပွငျ, ဒီဖွဲ့စည်းပုံ၏ si_pid နှင့် si_uid လယ်ကွင်း signal ကိုပေးပို့ခြင်းလုပ်ငန်းစဉ်၏က PID နှင့်အစစ်အမှန်အသုံးပြုသူ ID ကိုရယူရန်အသုံးပြုနိုင်ပါသည်။
  3. real-time အချက်ပြမှုများတစ်ဦးကိုအာမခံနိုင်ရန်အတွက်ကယ်နှုတ်တော်မူ၏နေကြသည်။ တူညီတဲ့အမျိုးအစားအကွိမျမြားစှာကို real-time အချက်ပြမှုများကိုသူတို့လှေတျတျောမူခဲ့သညျအမိန့်ထဲမှာကယ်နှုတ်တော်မူ၏နေကြသည်။ ကွဲပြားခြားနားသော Real-time အချက်ပြမှုများလုပ်ငန်းစဉ်ကိုစလှေတျနေတယ်ဆိုရင်, သူတို့ကနိမ့်ဆုံး-ရေတွက် signal ကိုစတင်ကယ်နှုတ်တော်မူ၏နေကြသည်။ (IE, အနိမ့်ကိုရေတွက်အချက်ပြမှုများကိုအမြင့်ဆုံးဦးစားပေးရှိသည်။ )

နှစ်ဦးစလုံးစံနှင့် Real-time အချက်ပြမှုများလုပ်ငန်းစဉ်များအတွက်ဆိုင်းငံ့နေတယ်ဆိုရင်, POSIX ပထမဦးဆုံးအကိုအပ်သောမသတ်မှတ်ထားသောကြောင့်အရွက်။ Linux ကို, များစွာသောအခြားကလပ်စတူ, ဤကိစ္စတွင်အတွက်စံအချက်ပြမှုများကိုမှဦးစားပေးပေးသည်။

POSIX အဆိုအရတစ်ခုအကောင်အထည်ဖော်မှုမှာအနည်းဆုံး _POSIX_SIGQUEUE_MAX ဖြစ်စဉ်မှတန်းစီခံရဖို့ (32) Real-time အချက်ပြမှုများကိုခွင့်ပြုသင့်ပါတယ်။ သို့သော်မဟုတ်ဘဲတစ်ဦးနှုန်း-ဖြစ်စဉ်ကိုကန့်သတ်ထားခြင်းထက် Linux ကိုအားလုံးဖြစ်စဉ်များအဘို့တန်းစီ Real-time အချက်ပြမှုများ၏နံပါတ်ပေါ်တဲ့စနစ်-ကျယ်ပြန့်ကန့်သတ်ချမှတ်ထားတဲ့။

ဤသည်ကန့်သတ်ကြည့်ရှုအားပေး (နှင့်အခွင့်ထူးနှင့်အတူ) နိုင်ပါသည် / proc / sys / kernel ကို / rtsig-max ကိုဖိုင်ကနေတစ်ဆင့်ပြောင်းလဲသွားတယ်။ တစ်ဦးကဆက်စပ်ဖိုင် / proc / sys / kernel ကို / rtsig-max ကို, အချက်ပြမှုများလက်ရှိတန်းစီနေကြသည်မည်မျှ Real-time ထွက်ရှာရန်အသုံးပြုနိုင်ပါသည်။

ဘက်ဘက်ကလိုက်လျောညီထွေ

POSIX.1

အရေးကြီး: command တစ်ခုကိုသင်၏အထူးသဖြင့်ကွန်ပျူတာပေါ်တွင်အသုံးပြုသည်ကိုမည်သို့ကြည့်ဖို့လူကို command ကို (% သည်လူ) ကိုသုံးပါ။