சமிக்ஞை - லினக்ஸ் / யூனிக்ஸ் கட்டளை

லினக்ஸ் POSIX நம்பகமான சிக்னல்களை ஆதரிக்கிறது (இதற்கிடையில் "நிலையான சமிக்ஞைகள்") மற்றும் POSIX நிகழ் நேர சமிக்ஞைகள்.

நிலையான சிக்னல்கள்

லினக்ஸ் கீழே தரப்பட்ட நிலையான சமிக்ஞைகளை ஆதரிக்கிறது. "மதிப்பு" நெடுவரிசையில் சுட்டிக்காட்டப்பட்டபடி பல சிக்னல் எண்கள் கட்டடக்கலை சார்ந்தவை. (மூன்று மதிப்புகள் வழங்கப்பட்டால், முதன்மையானது ஆல்ஃபா மற்றும் ஸ்பார்சிற்கு வழக்கமாக செல்லுபடியாகும், i386, பிபிசி மற்றும் ஷெல்லிற்கான நடுத்தர ஒன்றும், மற்றும் மிஸ்ட்களுக்கான கடைசியாகவும்.

A - தொடர்புடைய கட்டமைப்புக்கு ஒரு சமிக்ஞை இல்லை என்பதைக் குறிக்கிறது.)

அட்டவணையின் "செயல்" நெடுவரிசையின் உள்ளீடுகள் பின்வருமாறு சமிக்ஞைக்கு இயல்பான செயலை குறிப்பிடுகிறது:

கால

இயல்புநிலை செயல் செயல்முறையை நிறுத்த வேண்டும்.

IGN

இயல்புநிலை செயல் சமிக்ஞையை புறக்கணிக்க வேண்டும்.

கோர்

இயல்புநிலை செயல் செயல்முறை மற்றும் டம்ப் கோரை நிறுத்த வேண்டும்.

நிறுத்து

இயல்புநிலை செயல் செயல்பாட்டை நிறுத்த வேண்டும்.

முதலில் அசல் POSIX.1 தரநிலையில் விவரிக்கப்பட்ட சமிக்ஞைகள்.

சிக்னல் மதிப்பு அதிரடி கருத்து
அல்லது செயல்முறை கட்டுப்படுத்தும் மரணம்
சிகின்ட் 2 கால விசைப்பலகை இருந்து குறுக்கீடு
SIGQUIT 3 கோர் விசைப்பலகை இருந்து வெளியேறவும்
SIGILL 4 கோர் சட்டவிரோத வழிமுறை
SIGABRT 6 கோர் முறிவு இருந்து முறிவு சிக்னல் (3)
SIGFPE 8 கோர் மிதக்கும் புள்ளி விதிவிலக்கு
SIGKILL 9 கால சமிக்ஞையைக் கொல்
SIGSEGV 11 கோர் தவறான நினைவக குறிப்பு
SIGPIPE 13 கால உடைந்த குழாய்: எந்த வாசகருடன் குழாய்க்கு எழுதவும்
SIGALRM 14 கால அலாரத்திலிருந்து டைமர் சமிக்ஞை (2)
SIGTERM 15 கால நீட்டிப்பு சமிக்ஞை
SIGUSR1 30,10,16 கால பயனர் வரையறுக்கப்பட்ட சமிக்ஞை 1
SIGUSR2 31,12,17 கால பயனர் வரையறுக்கப்பட்ட சமிக்ஞை 2
SIGCHLD 20,17,18 IGN குழந்தை நிறுத்தப்பட்டது அல்லது நிறுத்தப்பட்டது
SIGCONT 19,18,25 நிறுத்தினால் தொடரவும்
SIGSTOP 17,19,23 நிறுத்து செயல்முறை நிறுத்து
SIGTSTP 18,20,24 நிறுத்து Tty இல் தட்டச்சு நிறுத்து
SIGTTIN 21,21,26 நிறுத்து பின்புல செயல்முறைக்கான tty உள்ளீடு
SIGTTOU 22,22,27 நிறுத்து பின்னணி செயல்முறைக்கு tty வெளியீடு

SIGKILL மற்றும் SIGSTOP ஐ சிக்னல்களை பிடிக்க முடியாது, தடுக்கலாம் அல்லது புறக்கணிக்க முடியாது.

POSIX.1 தரநிலையில் இல்லாத சமிக்ஞைகள் ஆனால் SUSv2 மற்றும் SUSv3 / POSIX 1003.1-2001 இல் விவரிக்கப்பட்டுள்ளன.

சிக்னல் மதிப்பு அதிரடி கருத்து
SIGPOLL கால நிகழக்கூடிய நிகழ்வு (Sys V). SIGIO இன் ஒத்த பெயர்
SIGPROF 27,27,29 கால விவரக்குறி டைமர் காலாவதியானது
SIGSYS 12, - 12 கோர் வழக்கமான (SVID) தவறான வாதம்
SIGTRAP 5 கோர் ட்ரேஸ் / ப்ராக்ஃபோன் பொறி
SIGURG 16,23,21 IGN சாக்கெட்டில் அவசர நிலை (4.2 BSD)
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 தவிர அமைப்பில்) SIGBUS இன் இயல்புநிலை நடத்தை (லினக்ஸ் 2.2 வரை) மற்றும் லினக்ஸ் 2.2 ஐ உள்ளடக்கியது. ( SIGXCPU மற்றும் SIGXFSZ ஆகியவற்றிற்கான இயல்புநிலை செயல்திறன் கோர் டம்ப் இல்லாமல் செயலிழக்கப்பட வேண்டும்). சில சமிக்ஞைகளில், இந்த சி.ஏ.எஸ்.எல் 1003.1-2001 தேவைகள் கோர் டம்ப் மூலம் செயலிழக்கப்படுவதை லினக்ஸ் 2.4 உறுதிப்படுத்துகிறது.

அடுத்த சில சமிக்ஞைகள்.

சிக்னல் மதிப்பு அதிரடி கருத்து
SIGEMT 7, -, 7 கால
SIGSTKFLT -, 16, - கால Coprocessor மீது ஸ்டேக் தவறு (பயன்படுத்தப்படாத)
SIGIO 23,29,22 கால இப்போது சாத்தியமான I / O (4.2 BSD)
SIGCLD - - 18 IGN SIGCHLD க்கு ஒரு ஒற்றுமை
SIGPWR 29,30,19 கால பவர் தோல்வி (கணினி வி)
SIGINFO 29, -, - SIGPWR க்கு ஒரு ஒற்றுமை
SIGLOST - - - கால கோப்பு பூட்டு இழந்தது
SIGWINCH 28,28,20 IGN விண்டோ மறுஅளவிடல் சமிக்ஞை (4.3 BSD, சன்)
SIGUNUSED - 31, - கால பயன்படுத்தப்படாத சமிக்ஞை (SIGSYS இருக்கும்)

(சிக்னல் 29 என்பது SIGINFO / SIGPWR ஆல்ஃபா மீது ஆனால் SIGLOST ஒரு ஸ்பாரக்கில் உள்ளது.)

SIGEMT என்பது POSIX 1003.1-2001 இல் குறிப்பிடப்படவில்லை, ஆனால் பெரும்பாலான பெரும்பாலான யூனிஸில், ஒருபோதும், அதன் இயல்புநிலை நடவடிக்கை பொதுவாக கோர் டம்ப் மூலம் செயலிழப்பை நிறுத்த பொதுவாக உள்ளது.

SIGPWR (இது POSIX 1003.1-2001 இல் குறிப்பிடப்படவில்லை) பொதுவாக தோன்றும் அந்த பிற யூனிட்களில் இயல்பாகவே புறக்கணிக்கப்படுகிறது.

SIOIO (இது POSIX 1003.1-2001 இல் குறிப்பிடப்படாதது) பல வேறுபட்ட யூனிட்களில் இயல்பாகவே புறக்கணிக்கப்படுகிறது.

நிகழ்நேர சிக்னல்கள்

POSIX.4 நிகழ்நேர விரிவாக்கங்களில் (இப்போது POSIX 1003.1-2001 இல் சேர்க்கப்பட்டுள்ளது) முதலில் வரையறுக்கப்பட்ட லினக்ஸ் உண்மையான நேர சமிக்ஞைகளை ஆதரிக்கிறது. லினக்ஸானது 32 நிகழ்நேர சமிக்ஞைகளை ஆதரிக்கிறது, 32 ( SIGRTMIN ) இலிருந்து 63 ( SIGRTMAX ) வரை எண்ணப்படுகின்றன. (நிகழ்நேர சமிக்ஞை எண்களின் வரம்பானது, யூனிஸ்கள் முழுவதும் மாறுபடும் என்பதால், திட்டங்கள் எப்போதும் SIGRTMIN + n ஐப் பயன்படுத்தி நிகழ்நேர சமிக்ஞைகளைக் குறிக்க வேண்டும்.)

நிலையான சமிக்ஞைகளைப் போலல்லாமல், நிகழ்நேர சமிக்ஞைகளுக்கு முன் வரையறுக்கப்படாத அர்த்தங்கள் இல்லை: நிகழ் நேர சமிக்ஞைகளின் முழு தொகுப்பு பயன்பாடு-வரையறுக்கப்பட்ட நோக்கங்களுக்காக பயன்படுத்தப்படலாம். (குறிப்பு, எனினும், LinuxThreads செயல்படுத்த முதல் மூன்று நிகழ் நேர சமிக்ஞைகள் பயன்படுத்துகிறது.)

ஒரு unhandled நிகழ் நேர சமிக்ஞை இயல்புநிலை நடவடிக்கை பெறுதல் செயல்முறை நிறுத்த வேண்டும்.

நிகழ் நேர சமிக்ஞைகள் பின்வருமாறு வேறுபடுகின்றன:

  1. நிகழ்நேர சமிக்ஞைகளின் பல நிகழ்வுகளை வரிசைப்படுத்தலாம். மாறாக, அந்த சமிக்ஞை தற்போது தடுக்கப்பட்டிருக்கும் போது ஒரு நிலையான சமிக்ஞையின் பல நிகழ்வுகளை வழங்கினால், ஒரே ஒரு நிகழ்வு மட்டுமே வரிசைப்படுத்தப்படுகிறது.
  2. சமிக்ஞை sigque (2) ஐ பயன்படுத்தி அனுப்பப்பட்டால், அதனுடன் இணைந்த மதிப்பு (முழு எண் அல்லது சுட்டிக்காட்டி) சமிக்ஞையுடன் அனுப்பப்படும். வரவேற்பு செயல்முறை இந்த சிக்னலுக்கு SAGRIGACTION கொடியை sigaction (2) க்குக் கையாளுதலில் நிறுவியிருந்தால் , si_value புலத்தின் வழியாக siginfo_t அமைப்பின் வழியாக இந்த தரவைப் பெற முடியும். கூடுதலாக, இந்த அமைப்பின் si_pid மற்றும் si_uid துறைகள் PID மற்றும் உண்மையான பயனர் ID ஐ சமிக்ஞையை அனுப்புவதற்குப் பயன்படுத்தலாம்.
  3. உண்மையான நேர சமிக்ஞைகள் ஒரு உத்தரவாத வரிசையில் வழங்கப்படுகின்றன. ஒரே வகை பல நிகழ் நேர சமிக்ஞைகள் அனுப்பப்பட்ட வரிசையில் வழங்கப்படுகின்றன. வெவ்வேறு நிகழ் நேர சமிக்ஞைகளை ஒரு செயல்முறைக்கு அனுப்பினால், அவை குறைந்த எண்ணிக்கையில் உள்ள சமிக்ஞைகளுடன் தொடங்குகின்றன. (அதாவது, குறைந்த எண்ணிக்கையிலான சமிக்ஞைகள் அதிக முன்னுரிமை கொண்டவை.)

ஒரு செயல்முறைக்கு நிலையான மற்றும் நிகழ்நேர சமிக்ஞைகள் நிலுவையில் இருந்தால், POSIX இது குறிப்பிடாமல் குறிப்பிடுகிறது, இது முதலில் வழங்கப்படுகிறது. லினக்ஸ், பல செயலாக்கங்களைப் போலவே, இந்த வழக்கில் நிலையான சமிக்ஞைகளுக்கு முன்னுரிமை அளிக்கிறது.

POSIX இன் படி, ஒரு செயலாக்கம் குறைந்தபட்சம் _POSIX_SIGQUEUE_MAX (32) நிகழ் நேர சமிக்ஞைகளை ஒரு செயல்முறைக்கு வரிசைப்படுத்த அனுமதிக்க வேண்டும். இருப்பினும், ஒரு செயல்முறை வரம்பை வைப்பதை விட, லினக்ஸ் அனைத்து செயல்முறைகளுக்காக வரிசையாக்க நிகழ் நேர சமிக்ஞைகளின் எண்ணிக்கையில் கணினி அளவிலான வரம்பை விதிக்கிறது.

இந்த வரம்பு பார்க்க முடியும் (மற்றும் சிறப்புரிமை) / proc / sys / kernel / rtsig-max கோப்பின் வழியாக மாறியது. தொடர்புடைய கோப்பில், / proc / sys / kernel / rtsig-max , எத்தனை நிகழ் நேர சமிக்ஞைகள் தற்போது வரிசையில் உள்ளன என்பதைக் கண்டறிய பயன்படுகிறது.

ஒப்புதல்

POSIX.1

முக்கியமானது: உங்கள் குறிப்பிட்ட கணினியில் ஒரு கட்டளை எவ்வாறு பயன்படுத்தப்படுகிறது என்பதைப் பார்க்க, man கட்டளை ( % man ) ஐப் பயன்படுத்தவும்.