Skip to main content

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

Anonim

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

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

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

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

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

கால

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

IGN

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

கோர்

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

நிறுத்து

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

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

சிக்னல்மதிப்புஅதிரடிகருத்து
அல்லது செயல்முறை கட்டுப்படுத்தும் மரணம்
சிகின்ட்2காலவிசைப்பலகை இருந்து குறுக்கீடு
SIGQUIT3கோர்விசைப்பலகை இருந்து வெளியேறவும்
SIGILL4கோர்சட்டவிரோத வழிமுறை
SIGABRT6கோர்இருந்து சிக்னல் முறிவு கைவிடவோ (3)
SIGFPE8கோர்மிதக்கும் புள்ளி விதிவிலக்கு
SIGKILL9காலசமிக்ஞையைக் கொல்
SIGSEGV11கோர்தவறான நினைவக குறிப்பு
SIGPIPE13காலஉடைந்த குழாய்: எந்த வாசகருடன் குழாய்க்கு எழுதவும்
SIGALRM14காலடைமர் சமிக்ஞை அலாரம் (2)
SIGTERM15காலநீட்டிப்பு சமிக்ஞை
SIGUSR130,10,16காலபயனர் வரையறுக்கப்பட்ட சமிக்ஞை 1
SIGUSR231,12,17காலபயனர் வரையறுக்கப்பட்ட சமிக்ஞை 2
SIGCHLD20,17,18IGNகுழந்தை நிறுத்தப்பட்டது அல்லது நிறுத்தப்பட்டது
SIGCONT19,18,25 நிறுத்தினால் தொடரவும்
SIGSTOP17,19,23நிறுத்துசெயல்முறை நிறுத்து
SIGTSTP18,20,24நிறுத்துTty இல் தட்டச்சு நிறுத்து
SIGTTIN21,21,26நிறுத்துபின்புல செயல்முறைக்கான tty உள்ளீடு
SIGTTOU22,22,27நிறுத்துபின்னணி செயல்முறைக்கு tty வெளியீடு

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

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

சிக்னல்மதிப்புஅதிரடிகருத்து
SIGPOLL காலநிகழக்கூடிய நிகழ்வு (Sys V). SIGIO இன் ஒத்த பெயர்
SIGPROF27,27,29காலவிவரக்குறி டைமர் காலாவதியானது
SIGSYS12,-,12கோர்வழக்கமான (SVID) தவறான வாதம்
SIGTRAP5கோர்ட்ரேஸ் / ப்ராக்ஃபோன் பொறி
SIGURG16,23,21IGNசாக்கெட்டில் அவசர நிலை (4.2 BSD)
SIGVTALRM26,26,28காலமெய்நிகர் எச்சரிக்கை கடிகாரம் (4.2 பிஎஸ்டி)
SIGXCPU24,24,30கோர்CPU கால வரம்பு மீறப்பட்டது (4.2 BSD)
SIGXFSZ25,25,31கோர்கோப்பு அளவு வரம்பு மீறப்பட்டது (4.2 BSD)

லினக்ஸ் 2.2 மற்றும் அதனுடன் இயல்புநிலை நடத்தைSIGSYS, SIGXCPU, SIGXFSZ, மற்றும் (SPARC மற்றும் MIPS தவிர அமைப்பில்)SIGBUS செயல்முறை (கோர் டம்ப் இல்லாமல்) முடிக்க வேண்டும். (வேறு ஏதேனும் யூனிட்களில் இயல்புநிலை செயலில்SIGXCPU மற்றும்SIGXFSZ கோர் டம்ப் இல்லாமல் செயல்முறையை நிறுத்த வேண்டும்.) லினக்ஸ் 2.4 இந்த சமிக்ஞைகளுக்கு POSIX 1003.1-2001 தேவைகளுக்கு பொருந்துகிறது, இந்த செயல்முறையை கோர் டம்ப் மூலம் முடக்குகிறது.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ஒப்புதல்

POSIX.1

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