សញ្ញា - ពាក្យបញ្ជាលីនុច / យូនីក

លីនុចគាំទ្រទាំងសញ្ញា POSIX អាចជឿទុកចិត្តបាន (ហៅថា "សញ្ញាស្តង់ដារ") និងសញ្ញា POSIX ជាក់ស្តែង។

សញ្ញាស្តង់ដារ

លីនុច គាំទ្រសញ្ញាស្តង់ដាដែលបានរៀបរាប់ខាងក្រោម។ លេខសញ្ញាជាច្រើនគឺអាស្រ័យលើស្ថាបត្យកម្មដែលបានបញ្ជាក់នៅក្នុងជួរឈរ "តម្លៃ" ។ (ដែលតម្លៃបីត្រូវបានផ្តល់តម្លៃទីមួយគឺត្រឹមត្រូវសម្រាប់ alpha និង sparc ដែលជាចំណុចកណ្តាលសម្រាប់ i386, ppc និង sh និងចុងក្រោយសម្រាប់ mips ។

សញ្ញា A មានន័យថាសញ្ញាមិនមានវត្តមានលើស្ថាបត្យកម្មដែលត្រូវគ្នា។

ធាតុនៅក្នុងជួរឈរ "សកម្មភាព" នៃតារាងបញ្ជាក់សកម្មភាពលំនាំដើមសម្រាប់សញ្ញាដូចខាងក្រោម:

រយៈពេល

សកម្មភាពលំនាំដើមគឺបញ្ចប់ដំណើរការ។

Ign

សកម្មភាពលំនាំដើមគឺមិនអើពើសញ្ញា។

ស្នូល

សកម្មភាពលំនាំដើមគឺដើម្បីបញ្ចប់ដំណើរការនិងស្នាមបំលាស់។

បញ្ឈប់

សកម្មភាពលំនាំដើមគឺដើម្បីបញ្ឈប់ដំណើរការ។

ដំបូងសញ្ញាដែលបានពិពណ៌នានៅក្នុងស្តង់ដារ POSIX.1 ដើម។

សញ្ញា តម្លៃ សកម្មភាព មតិយោបល់
ឬការស្លាប់នៃដំណើរការត្រួតពិនិត្យ
SIGINT 2 រយៈពេល ផ្អាកពីក្តារចុច
SIGQUIT 3 ស្នូល ចេញពីក្តារចុច
SIGIL 4 ស្នូល ការបង្រៀនខុសច្បាប់
SIGABRT 6 ស្នូល បញ្ឈប់សញ្ញាពី abort (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 BSD)
SIGXCPU 24,24,30 ស្នូល ដែនកំណត់រយៈពេលនៃស៊ីភីយូលើស (4.2 BSD)
SIGXFSZ 25,25,31 ស្នូល លើសទំហំកំណត់ឯកសារ (4.2 BSD)

រហូតមកដល់និងរួមបញ្ចូលទាំងលីនុច 2.2 ឥរិយាបថលំនាំដើមសម្រាប់ SIGSYS , SIGXCPU , SIGXFSZ និង (លើស្ថាបត្យកម្មផ្សេងទៀតជាង SPARC និង MIPS) SIGBUS គឺដើម្បីបញ្ចប់ដំណើរការ (ដោយគ្មានស្នូលចាក់សោរ) ។ (នៅលើយូនីធីមួយចំនួនផ្សេងទៀតសកម្មភាពលំនាំដើមសម្រាប់ SIGXCPU និង SIGXFSZ គឺដើម្បីបញ្ចប់ដំណើរការដោយគ្មានស្នូលចាក់សោ។ ) លីនុច 2.4 បំពេញតាមតម្រូវការ POSIX 1003.1-2001 សម្រាប់សញ្ញាទាំងនេះបញ្ចប់ដំណើរការជាមួយស្នូលចាក់សោ។

សញ្ញាផ្សេងៗផ្សេងៗទៀត។

សញ្ញា តម្លៃ សកម្មភាព មតិយោបល់
SIGEMT 7, -, 7 រយៈពេល
SIGSTKFLT -, 16, - រយៈពេល កំហុសជង់លើ coprocessor (មិនប្រើ)
SIGIO 23,29,22 រយៈពេល ឥឡូវនេះខ្ញុំអាចធ្វើទៅបាន (4.2 BSD)
SIGCLD -, -, 18 Ign ន័យស្រដៀងសម្រាប់ SIGCHLD
SIGPWR 29,30,19 រយៈពេល ការបរាជ័យថាមពល (ប្រព័ន្ធ V)
SIGINFO 29, -, - សទិសន័យសម្រាប់ SIGPWR
SIGLOST -, -, - រយៈពេល ការចាក់សោឯកសារបាត់បង់
SIGWINCH 28,28,20 Ign សញ្ញាប្ដូរទំហំបង្អួច (4.3 BSD, អាទិត្យ)
SIGUNUSED -, 31, - រយៈពេល សញ្ញាដែលមិនប្រើ (នឹងជា SIGSYS)

(សញ្ញា 29 គឺ SIGINFO / SIGPWR នៅលើ alpha ប៉ុន្តែ SIGLOST នៅលើ sparc មួយ។ )

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 ប្រើសញ្ញាម៉ោងពិតប្រាកដបីដំបូង។ )

សកម្មភាពលំនាំដើមសម្រាប់សញ្ញាពេលវេលាពិតដែលមិនត្រូវបានដោះស្រាយគឺបញ្ចប់ដំណើរការទទួល។

សញ្ញាពិតប្រាកដត្រូវបានសម្គាល់ដោយ:

  1. វត្ថុជាច្រើននៃសញ្ញាពិតប្រាកដអាចត្រូវបានរៀបជាជួរ។ ផ្ទុយទៅវិញប្រសិនបើមានវត្ថុជាច្រើននៃសញ្ញាស្តង់ដារត្រូវបានបញ្ជូនខណៈពេលដែលសញ្ញានោះត្រូវបានទប់ស្កាត់នៅពេលនោះមានតែវត្ថុមួយប៉ុណ្ណោះដែលត្រូវបានដាក់ជាជួរ។
  2. ប្រសិនបើសញ្ញាត្រូវបានផ្ញើដោយប្រើ sigqueue (2) តម្លៃអមជាមួយ (ទាំងចំនួនគត់ឬព្រួញ) អាចត្រូវបានផ្ញើជាមួយសញ្ញា។ ប្រសិនបើដំណើរការទទួលកំណត់អ្នកដោះស្រាយបញ្ហានេះដោយប្រើទង់ SA_SIGACTION ទៅ សញ្ញា (2) បន្ទាប់មកវាអាចទទួលបានទិន្នន័យនេះតាមរយៈវាល si_invalue នៃរចនាសម្ព័ន្ធ siginfo_t ដែលបានអនុម័តជាអាគុយម៉ង់ទីពីរទៅនឹង handler ។ លើសពីនេះទៀតវាល si_pid និង si_uid នៃរចនាសម្ព័ន្ធនេះអាចត្រូវបានប្រើដើម្បីទទួលបាន PID និងលេខសម្គាល់អ្នកប្រើពិតនៃដំណើរការដែលបញ្ជូនសញ្ញា។
  3. សញ្ញាពិតប្រាកដត្រូវបានផ្តល់ជូនតាមលំដាប់លក្ខណ៍អក្សរធានា។ សញ្ញាជាក់ស្តែងច្រើនប្រភេទនៃប្រភេទដូចគ្នាត្រូវបានបញ្ជូនតាមលំដាប់ដែលពួកគេត្រូវបានបញ្ជូន។ ប្រសិនបើសញ្ញាម៉ោងពិតប្រាកដផ្សេងៗគ្នាត្រូវបានផ្ញើទៅដំណើរការមួយពួកគេត្រូវបានបញ្ជូនដោយចាប់ផ្តើមដោយសញ្ញាទាបបំផុត។ (ជាឧទាហរណ៍សញ្ញាដែលមានលេខទូរស័ព្ទមានអាទិភាពខ្ពស់បំផុត។ )

ប្រសិនបើសញ្ញាស្តង់ដារនិងពេលវេលាពិតមិនទាន់ត្រូវបានដំណើការសម្រាប់ដំណើរការណាមួយ POSIX ទុកឱ្យវាមិនច្បាស់លាស់ដែលត្រូវបានបញ្ជូនជាមុនសិន។ លីនុចក៏ដូចជាការអនុវត្តផ្សេងៗជាច្រើនទៀតផ្តល់អាទិភាពដល់សញ្ញាស្តង់ដារក្នុងករណីនេះ។

យោងទៅតាម POSIX ការអនុវត្តគួរតែអនុញ្ញាតយ៉ាងហោចណាស់ _POSIX_SIGQUEUE_MAX (32) សញ្ញាសញ្ញាពេលវេលាដែលត្រូវបានតម្រៀបក្នុងដំណើរការ។ ទោះជាយ៉ាងណាក៏ដោយជាជាងដាក់កម្រិតក្នុងមួយដំណើរការលីនុចកំណត់នូវដែនកំណត់ប្រព័ន្ធទាំងមូលលើចំនួនសញ្ញាបង្ហាញពេលវេលាពិតៗសម្រាប់ដំណើរការទាំងអស់។

ដែនកំណត់នេះអាចត្រូវបានមើល (និងដោយមានសិទ្ធិ) បានផ្លាស់ប្ដូរតាមរយៈឯកសារ / proc / sys / kernel / rtsig-max ។ ឯកសារពាក់ព័ន្ធ / proc / sys / kernel / rtsig-max អាចត្រូវបានប្រើដើម្បីស្វែងយល់ថាតើមានសញ្ញាម៉ោងពិតប្រាកដប៉ុន្មានត្រូវបានដាក់ជាជួរ។

គោរពតាម

POSIX.1

សំខាន់: ប្រើពាក្យបញ្ជា man ( % man ) ដើម្បីមើលពីរបៀបប្រើពាក្យបញ្ជាលើកុំព្យូទ័រជាក់លាក់របស់អ្នក។