ലിനക്സ് POSIX വിശ്വസനീയമായ സിഗ്നലുകൾ (ഇനി മുതൽ "സാധാരണ സിഗ്നലുകൾ"), POSIX റിയൽ-ടൈം സിഗ്നലുകൾ എന്നിവ പിന്തുണയ്ക്കുന്നു.
സ്റ്റാൻഡേർഡ് സിഗ്നലുകൾ
താഴെ പറഞ്ഞിരിക്കുന്ന അടിസ്ഥാന സിഗ്നലുകൾ ലിനക്സ് പിന്തുണയ്ക്കുന്നു. "മൂല്യം" നിരയിൽ സൂചിപ്പിച്ച പോലെ നിരവധി സിഗ്നൽ നമ്പറുകൾ ആറ്ക്കിടെക്ച്ചർ അനുസരിച്ചാണ്. (മൂന്ന് മൂല്യങ്ങൾ നൽകുമ്പോൾ, ആദ്യത്തേത് സാധാരണയായി ആൽഫാ, സ്പാർക്ക്, i386, പിപിസി, ഷീറ്റ്, മിപ്പ് അവസാനത്തേത് എന്നിവയ്ക്കായി മധ്യത്തിലായിരിക്കും സാധുവാകുക.
A - അനുയോജ്യമായ വാസ്തുവിദ്യയിൽ ഒരു സിഗ്നൽ ഇല്ലെന്ന് സൂചിപ്പിക്കുന്നു.)
പട്ടികയിലെ "ആക്ഷൻ" നിരയിലെ എൻട്രികൾ താഴെ പറയുന്നതുപോലെ സിഗ്നലിന്റെ സ്ഥിര പ്രവർത്തനം വ്യക്തമാക്കുന്നു:
കാലാവധി
പ്രക്രിയ അവസാനിപ്പിക്കാൻ സ്ഥിര പ്രവർത്തനം നടത്തുക എന്നതാണ്.
അവഗണിക്കുക
സിഗ്നൽ അവഗണിക്കുന്നതിനാണ് സ്ഥിര പ്രവർത്തനം.
കോർ
പ്രോസസ് ആൻഡ് ഡംപ് കോർ നീക്കം ചെയ്യുന്നതിനായാണ് സ്ഥിര പ്രവർത്തനം.
നിർത്തുക
പ്രക്രിയ നിർത്തുന്നതിനായാണ് സ്ഥിര പ്രവർത്തനം.
ആദ്യം അസൽ POSIX.1 സ്റ്റാൻഡേർഡിൽ വിവരിച്ച സിഗ്നലുകൾ.
സിഗ്നൽ | മൂല്യം | പ്രവർത്തനം | അഭിപ്രായം |
അല്ലെങ്കിൽ നിയന്ത്രണം നിയന്ത്രിക്കുന്നതിന്റെ മരണം | |||
SIGINT | 2 | കാലാവധി | കീബോർഡിൽ നിന്ന് തടയുക |
SIGQUIT | 3 | കോർ | കീബോർഡിൽ നിന്ന് പുറത്തുകടക്കുക |
SIGILL | 4 | കോർ | നിയമവിരുദ്ധമായ നിർദ്ദേശം |
SIGABRT | 6 | കോർ | ഉപേക്ഷിക്കുന്നതിൽ നിന്ന് സിഗ്നൽ ഉപേക്ഷിക്കുക (3) |
SIGFPE | 8 | കോർ | ഫ്ളോട്ടിങ് പോയിന്റ് എക്സെപ്ഷൻ |
SIGKILL | 9 | കാലാവധി | സിഗ്നൽ ഇല്ലാതാക്കുക |
SIGSEGV | 11 | കോർ | മെമ്മറി റഫറൻസ് അസാധുവാണ് |
സിജിപി | 13 | കാലാവധി | ബ്രോക്കൺ പൈപ്പ്: വായനക്കാരുമായി പൈപ്പ് എഴുതുക |
SIGALRM | 14 | കാലാവധി | അലാറിൽ നിന്ന് ടൈമർ സിഗ്നൽ (2) |
SIGTERM | 15 | കാലാവധി | അവസാനത്തെ സിഗ്നൽ |
SIGUSR1 | 30,10,16 | കാലാവധി | ഉപയോക്താവ് നിർവ്വചിച്ച സിഗ്നൽ 1 |
SIGUS2 | 31,12,17 | കാലാവധി | ഉപയോക്താവ് നിർവ്വചിച്ച സിഗ്നൽ 2 |
SIGCHLD | 20,17,18 | അവഗണിക്കുക | കുട്ടി നിർത്തി അല്ലെങ്കിൽ അവസാനിപ്പിച്ചു |
SIGCONT | 19,18,25 | നിർത്തിയാൽ തുടരുക | |
SIGSTOP | 17,19,23 | നിർത്തുക | പ്രക്രിയ നിർത്തുക |
SIGTSTP | 18,20,24 | നിർത്തുക | ടൈപ്പില് ടൈപ്പ് ചെയ്യുന്നത് നിര്ത്തുക |
SIGTTIN | 21,21,26 | നിർത്തുക | പശ്ചാത്തല പ്രോസസ്സിനായി ടൈറ്റിൽ ഇൻപുട്ട് |
SIGTTOU | 22,22,27 | നിർത്തുക | പശ്ചാത്തല പ്രക്രിയയ്ക്കായി tty ഔട്ട്പുട്ട് |
SIGKILL ഉം SIGSTOP- ഉം സിഗ്നലുകൾ പിടിക്കാനോ തടയാനോ അവഗണിക്കാനോ കഴിയില്ല.
POSIX.1 സ്റ്റാൻഡേർഡിൽ സിഗ്നലുകൾ അടുത്തല്ല, പക്ഷെ SUSv2, SUSV3 / POSIX 1003.1-2001 എന്നിവയിൽ വിവരിക്കുന്നു.
സിഗ്നൽ | മൂല്യം | പ്രവർത്തനം | അഭിപ്രായം |
സിഗ്പോൾ | കാലാവധി | പൊള്ളയായ ഇവന്റ് (Sys V). SIGIO എന്നതിന്റെ പര്യായപദം | |
SIGPROF | 27,27,29 | കാലാവധി | പ്രൊഫൈലിംഗ് ടൈമർ കാലഹരണപ്പെട്ടു |
സിഗ്സീസ് | 12, -, 12 | കോർ | പതിവ് തെറ്റായ വാദം (എസ്വിഐഡി) |
SIGTRAP | 5 | കോർ | ട്രെയ്സ് / ബ്രേക്ക്പോയിന്റ് ട്രാപ്പ് |
SIGURG | 16,23,21 | അവഗണിക്കുക | സോക്കറ്റിലെ അടിയന്തര അവസ്ഥ (4.2 ബിഎസ്ഡി) |
SIGVTALRM | 26,26,28 | കാലാവധി | വിർച്വൽ അലാം ഘടികാരം (4.2 ബിഎസ്ഡി) |
SIGXCPU | 24,24,30 | കോർ | CPU സമയപരിധി കവിഞ്ഞു (4.2 BSD) |
SIGXFSZ | 25,25,31 | കോർ | ഫയൽ വലുപ്പ പരിധി കവിഞ്ഞിരിക്കുന്നു (4.2 BSD) |
SIGSYS , SIGXCPU , SIGXFSZ , SPARC, MIPS എന്നിവയ്ക്കുള്ള സ്വതവേയുള്ള സ്വഭാവം ലിനക്സ് 2.2 ആയി അപ്ഗ്രേഡ് ചെയ്തു , സിജിബസ് പ്രോസസ് അവസാനിപ്പിച്ചത് (ഒരു കോർ ഡംപ് ഇല്ലാതെ). (ചില യൂണിസുകളിൽ SIGXCPU , SIGXFSZ എന്നിവയ്ക്കുള്ള സ്ഥിര പ്രവർത്തനങ്ങൾ കോർ ഡംപില്ലാതെ പ്രോസസ് അവസാനിപ്പിക്കുക എന്നതാണ്.) ലിനക്സ് 2.4 ഈ സിഗ്നലുകൾക്കായി പോസിക്സ് 1003.1-2001 ആവശ്യങ്ങൾക്ക് അനുയോജ്യമാണ്.
അടുത്ത പല സിഗ്നലുകൾ.
സിഗ്നൽ | മൂല്യം | പ്രവർത്തനം | അഭിപ്രായം |
SIGEMT | 7, -, 7 | കാലാവധി | |
SIGSTKFLT | -, 16, - | കാലാവധി | കോപ്രൊസസ്സറിൽ സ്റ്റാക്ക് തകരാർ (ഉപയോഗിക്കാത്തത്) |
SIGIO | 23,29,22 | കാലാവധി | സാധ്യമാകുന്ന I / O (4.2 BSD) |
SIGCLD | -, -, 18 | അവഗണിക്കുക | SIGCHLD എന്നതിനുള്ള ഒരു പര്യായം |
SIGPWR | 29,30,19 | കാലാവധി | പവർ പരാജയം (സിസ്റ്റം V) |
SIGINFO | 29, -, - | SIGPWR എന്നതിന് ഒരു പര്യായം | |
SIGLOST | -, -, - | കാലാവധി | ഫയൽ ലോക്ക് നഷ്ടപ്പെട്ടു |
SIGWINCH | 28,28,20 | അവഗണിക്കുക | വിൻഡോയുടെ വലുപ്പം സിഗ്നൽ (4.3 ബിഎസ്ഡി, സൺ) |
SIGUNUSED | -, 31, - | കാലാവധി | ഉപയോഗിക്കാത്ത സിഗ്നൽ (SIGSYS ആയിരിക്കും) |
(സിഗ്നൽ 29 എന്നത് SIGINFO / SIGPWR ആൽഫായിൽ ആണ് , എന്നാൽ ഒരു സ്പാർക്കിൽ SIGLOST ആണ്.)
POSIX 1003.1-2001 ൽ SIGEMT വ്യക്തമാക്കിയിട്ടില്ല, എന്നാൽ മറ്റ് മിക്ക യൂനിനുകളിലും ഒരിക്കലും അന്തർലീനമായിട്ടില്ല, അതിന്റെ സ്ഥിര പ്രവർത്തനം കോർ ഡംപ് ഉപയോഗിച്ച് പ്രോസസ്സ് അവസാനിപ്പിക്കാൻ സാധാരണയായിരിക്കും.
SIGPWR (POSIX 1003.1-2001 ൽ വ്യക്തമാക്കിയിട്ടില്ലാത്തവ) സാധാരണയായി അവ അവിടെ ദൃശ്യമാകുന്ന മറ്റ് യൂണിസുകളിൽ സ്വതവേ അവഗണിക്കുന്നു.
SIOIO (POSIX 1003.1-2001 ൽ വ്യക്തമാക്കിയിട്ടില്ലാത്തവ) പല പല യൂനിറ്റുകളിൽ സ്ഥിരമായി അവഗണിക്കപ്പെടുന്നു.
തൽസമയ സിഗ്നലുകൾ
POSIX.4 റിയൽ-ടൈം എക്സ്റ്റെൻഷനുകളിൽ (ഇപ്പോൾ POSIX 1003.1-2001 ലും ഉൾപ്പെടുത്തിയിരിക്കുന്നു) യഥാർത്ഥത്തിൽ നിർവ്വചിച്ച ലിനക്സ് യഥാർത്ഥ സമയ സിഗ്നലുകൾ പിന്തുണയ്ക്കുന്നു. ലിനക്സ് 32 റിയൽ-ടൈം സിഗ്നലുകളെ പിന്തുണയ്ക്കുന്നു, 32 ( SIGRTMIN ) മുതൽ 63 ( SIGRTMAX ) വരെ. (പ്രോഗ്രാമുകൾ, എല്ലായ്പ്പോഴും തൽസമയ സിഗ്നൽ സംഖ്യകളുടെ വ്യാപ്തി യൂണിസുകളിൽ വ്യത്യസ്തമാകുന്നത് കാരണം SIGRTMIN + n നൊപ്പം റിയൽ-ടൈം സിഗ്നലുകൾ റഫർ ചെയ്യണം.)
സാധാരണ സിഗ്നലുകളിൽ നിന്ന് വ്യത്യസ്തമായി, റിയൽ-ടൈം സിഗ്നലുകൾക്ക് മുൻകൂട്ടി നിർവചിച്ചിട്ടില്ലാത്ത അർത്ഥങ്ങൾ ഉണ്ട്: അപ്ലിക്കേഷൻ നിർവ്വചിക്കപ്പെട്ട ഉദ്ദേശ്യങ്ങൾക്കായി തൽസമയ സിഗ്നലുകൾ ഉപയോഗിക്കാൻ കഴിയും. (Note, എങ്കിലും LinuxThreads ഇംപ്ലിമെന്റേഷൻ ആദ്യത്തെ മൂന്ന് റിയൽ-ടൈം സിഗ്നലുകൾ ഉപയോഗിക്കുന്നു.)
ലഭ്യമാക്കാത്ത യഥാർത്ഥത്തിലുള്ള സിഗ്നലിന്റെ സ്ഥിര പ്രവർത്തനം സ്വീകരിക്കുന്ന പ്രക്രിയ അവസാനിപ്പിക്കുന്നതാണ്.
റിയൽ-ടൈം സിഗ്നലുകൾ ഇനിപ്പറയുന്നതിൽ നിന്നും വേർതിരിക്കുന്നു:
- തൽസമയ സിഗ്നലുകൾ നിരവധി സംഭവങ്ങൾ ക്യൂവിലായിരിക്കാം. ഇതിനു വിരുദ്ധമായി, ഒരു സിഗ്നൽ നിലവിൽ തടയപ്പെട്ടപ്പോൾ, ഒരു സാധാരണ സിഗ്നലിന്റെ നിരവധി സംഭവങ്ങൾ ഡെലിവറി ചെയ്താൽ, ഒരു ഇൻസ്റ്റൻസ് മാത്രം ക്യൂവിലാണ്.
- സിഗ്വേ (2) ഉപയോഗിച്ച് സിഗ്നൽ അയച്ചിട്ടുണ്ടെങ്കിൽ, ഒരു അനുബന്ധ മൂല്യം (ഒരു ഇന്റിജർ അല്ലെങ്കിൽ ഒരു പോയിന്റർ) സിഗ്നലിനൊപ്പം അയയ്ക്കാവുന്നതാണ്. സ്വീകരിക്കുന്ന പ്രക്രിയ ഈ സങ്കേതത്തിന് SAGRIGACTION ഫ്ലാഗ് ഉപയോഗിച്ച് sgaction (2) എന്നതിന് ഒരു ഹാൻഡ്ലർ സ്ഥാപിക്കുകയാണെങ്കിൽ, ഹാൻഡിലറിനോട് രണ്ടാമത്തെ ആർഗ്യുമെന്റ് ആയി siginfo_t ഘടനയുടെ si_value ഫീൽഡ് വഴി ഈ ഡാറ്റ നേടാം . കൂടാതെ, ഈ ഘടനയുടെ si_pid , si_uid എന്നീ ഫീൽഡുകൾ സിഗ്നൽ അയയ്ക്കുന്ന പ്രക്രിയയുടെ PID, റിയൽ യൂസർ ഐഡി എന്നിവ ലഭിക്കാനായി ഉപയോഗിക്കാം.
- റിയൽ-ടൈം സിഗ്നലുകൾ ഗ്യാരണ്ടീഡ് ക്രമത്തിൽ ഡെലിവർ ചെയ്തു. ഒരേ തരത്തിലുള്ള ഒന്നിലധികം തത്സമയ സിഗ്നലുകൾ അവർ അയയ്ക്കുന്ന ക്രമത്തിൽ വിതരണം ചെയ്യും. വ്യത്യസ്തമായ റിയൽ-ടൈം സിഗ്നലുകൾ ഒരു പ്രോസസ്സിലേക്ക് അയയ്ക്കുകയാണെങ്കിൽ, അവ ഏറ്റവും കുറഞ്ഞ എണ്ണം നൽകപ്പെട്ട സിഗ്നലിൽ നിന്നാണ് നൽകുന്നത്. (അതായത്, താഴ്ന്ന അക്കമിട്ട സിഗ്നലുകൾക്ക് ഉയർന്ന മുൻഗണനയുണ്ട്.)
ഒരു പ്രോസസ്സിനുവേണ്ടി സ്റ്റാൻഡേർഡ്, റിയൽ-ടൈം സിഗ്നലുകൾ അവശേഷിക്കുന്നുവെങ്കിൽ, POSIX അത് വ്യക്തമാക്കാതിരിക്കുകയും, ആദ്യം വിതരണം ചെയ്യുകയും ചെയ്യും. ലിനക്സിനുള്ള അനവധി പരിഷ്കാരങ്ങൾ പോലെ, ഈ കേസിൽ സാധാരണ സിഗ്നലുകൾക്ക് മുൻഗണന നൽകുന്നു.
പോസിക്സ് അനുസരിച്ച്, ഒരു പ്രോസസ്സിന് ക്യൂവിലായിരിക്കാൻ യഥാർത്ഥത്തിൽ ഒരു സമയദൈർഘ്യം അവതരിപ്പിക്കാൻ _POSIX_SIGQUEUE_MAX (32) അനുവാദം നൽകണം. എന്നിരുന്നാലും, ഒരു പ്രോസസ്സ് പരിധി വയ്ക്കുന്നതിനല്ല, എല്ലാ പ്രക്രിയകൾക്കുമായുള്ള ക്യൂഡ് റിയൽ-ടൈം സിഗ്നലുകളുടെ എണ്ണത്തിൽ സിസ്റ്റം-വൈഡ് പരിധി ലിനക്സ് വിന്യസിക്കുന്നു.
/ Proc / sys / kernel / rtsig-max ഫയൽ മുഖേന ഈ പരിധി കാണാൻ സാധിക്കുന്നു (കൂടാതെ, പദവി). നിലവിൽ, എത്ര റിയൽ-ടൈം സിഗ്നലുകൾ ക്യൂവിലുള്ളതായി കണ്ടെത്തുന്നതിന് / proc / sys / kernel / rtsig-max എന്ന അനുബന്ധ ഫയൽ ഉപയോഗിയ്ക്കാം.
ഇതിലേക്ക് ചേരുന്നു
POSIX.1
പ്രധാനപ്പെട്ടതു്: നിങ്ങളുടെ കംപ്യൂട്ടറിൽ എങ്ങനെയാണ് കമാൻഡ് ഉപയോഗിക്കേണ്ടത് എന്ന് കാണുവാൻ man command ( % man ) ഉപയോഗിക്കുക.