Სიგნალი - Linux / Unix Command

Linux მხარს უჭერს ორივე POSIX სანდო სიგნალებს (შემდგომში "სტანდარტული სიგნალები") და POSIX რეალურ დროში სიგნალებს.

სტანდარტული სიგნალები

Linux მხარს უჭერს ქვემოთ მოცემულ სტანდარტულ სიგნალებს. რამდენიმე სიგნალი არის არქიტექტურის დამოკიდებულება, როგორც "ღირებულების" სვეტში მითითებულია. (სადაც სამი მნიშვნელობა ენიჭება, პირველი, როგორც წესი, მოქმედებს ალფა და სპარკი, შუა ერთი i386, ppc და sh და უკანასკნელი mips- ისთვის.

A - მიუთითებს, რომ სიგნალი არ შეესაბამება შესაბამის არქიტექტურას.)

ცხრილის "სამოქმედო" სვეტის ჩანაწერები განსაზღვრავს ნაგულისხმევი მოქმედების სიგნალს, შემდეგნაირად:

ვადა

ნაგულისხმევი ქმედება არის პროცესის შეწყვეტა.

იგნორირება

ნაგულისხმევი ქმედება არის სიგნალის იგნორირება.

Core

ნაგულისხმევი ქმედება არის პროცესის შეწყვეტა და ნაგავსაყრელი.

შეაჩერე

ნაგულისხმევი ქმედება არის პროცესის შეჩერება.

პირველი სიმბოლოები აღწერილია თავდაპირველი POSIX.1 სტანდარტით.

სიგნალი ღირებულება მოქმედება კომენტარი
ან საკონტროლო პროცესის სიკვდილი
SIGINT 2 ვადა კლავიატურა კლავიატურაზე
SIGQUIT 3 Core კლავიატურადან გასვლა
SIGILL 4 Core არალეგალური ინსტრუქცია
SIGABRT 6 Core შეწყვეტა სიგნალიდან (3)
SIGFPE 8 Core მცურავი წერტილის გამონაკლისი
SIGKILL 9 ვადა Kill სიგნალი
SIGSEGV 11 Core არასწორი მეხსიერების მითითება
SIGPIPE 13 ვადა Broken მილის: ჩაწერეთ მილის გარეშე მკითხველი
SIGALRM 14 ვადა ტაიმერის სიგნალი სიგნალიდან (2)
SIGTERM 15 ვადა შეწყვეტის სიგნალი
SIGUSR1 30,10,16 ვადა მომხმარებლის მიერ განსაზღვრული სიგნალი 1
SIGUSR2 31,12,17 ვადა მომხმარებლის მიერ განსაზღვრული სიგნალი 2
SIGCHLD 20,17,18 იგნორირება ბავშვი შეწყვიტა ან შეწყდა
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 Core ცუდი არგუმენტი რუტინული (SVID)
SIGTRAP 5 Core Trace / breakpoint trap
SIGURG 16,23,21 იგნორირება სასწრაფო მდგომარეობაში სოკეტზე (4.2 BSD)
SIGVTALRM 26,26,28 ვადა ვირტუალური მაღვიძარა (4.2 BSD)
SIGXCPU 24,24,30 Core CPU დროის ლიმიტი გადააჭარბა (4.2 BSD)
SIGXFSZ 25,25,31 Core ფაილის ზომა ლიმიტი გადააჭარბა (4.2 BSD)

SIGSYS , SIGXCPU , SIGXFSZ , და (SPARC და MIPS- ის გარდა) SIGBUS- ის ნაგულისხმევი ქცევები იყო პროცესის შეწყვეტა (ძირითადი ნაგავსაყრელის გარეშე). (SIGXCPU- ისა და SIGXFSZ- ისთვის ნაგულისხმევი ქმედება, ძირითადი პროცედურის გარეშე, პროცესის შეწყვეტაა). Linux 2.4 შეესაბამება POSIX 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 BSD, მზე)
ჩაიწერეთ -, 31, - ვადა გამოუყენებელი სიგნალი (იქნება SIGSYS)

(სიგნალი 29 არის SIGINFO / SIGPWR ალფაზე , მაგრამ SIGLOST- ს sparc.)

SIGEMT არ არის განსაზღვრული POSIX 1003.1-2001 წლებში, მაგრამ უმეტესობა სხვა უმეტესობებზე არ ჩანს, სადაც მისი ჩვეულებრივი ქმედება, როგორც წესი, მთავარ ნაგავსაყრელთან შეწყვეტას.

SIGPWR (რომელიც არ არის განსაზღვრული POSIX 1003.1-2001) ჩვეულებრივ იგნორირებულია ჩვეულებრივ იმ სხვა ფირმებზე, სადაც ჩანს.

SIO- ს (რომელიც არ არის განსაზღვრული POSIX 1003.1-2001) იგნორირებულია არაერთ სხვა გაერთიანებაში.

რეალურ დროში სიგნალები

Linux მხარს უჭერს რეალურ დროში სიგნალებს, როგორც თავდაპირველად განისაზღვრება POSIX.4 რეალურ დროში გაგრძელება (და ახლა შედის POSIX 1003.1-2001). Linux მხარს უჭერს 32 რეალურ დროში სიგნალებს, დათვლილია 32 ( SIGRTMIN ) დან 63 ( SIGRTMAX ). (პროგრამები ყოველთვის უნდა ითვალისწინებდეს რეალურ დროში სიგნალებს SIGRTMIN + n- ის ნოტაში, რადგან რეალურ დროში სიგნალის ნომრების დიაპაზონი მერყეობს სხვადასხვა საშუალებებით.)

სტანდარტული სიგნალებისგან განსხვავებით, რეალურ დროში სიგნალებს არ გააჩნიათ წინასწარგანსაზღვრული მნიშვნელობა: რეალურ დროში სიგნალის მთელი კომპლექტი შეიძლება გამოყენებულ იქნეს განაცხადის განსაზღვრული მიზნებისათვის. (შენიშვნა, თუმცა, LinuxThreads განხორციელების იყენებს პირველი სამი რეალურ დროში სიგნალები.)

თავდაპირველი ქმედებები უპასუხისმგებლო რეალურ დროში სიგნალის მიღება არის მიღების პროცესი.

რეალურ დროში სიგნალები გამოირჩევა შემდეგით:

  1. მრავალჯერადი შემთხვევები რეალურ დროში სიგნალები შეიძლება რიგში. ამის საპირისპიროდ, იმ შემთხვევაში, თუ სტანდარტული სიგნალის მრავალი შემთხვევა გადაცემულია, ამ სიგნალი ამჟამად დაბლოკილია, მაშინ მხოლოდ ერთი ინსტანცია არის რიგები.
  2. თუ სიგნალი იგზავნება გამოყენებით sigqueue (2), თანმხლები ღირებულება (ან მთელი რიცხვი ან მაჩვენებელი) შეიძლება გაგზავნილი სიგნალით. თუ მიმღები პროცესი ამ სიგნალისთვის ხელსაყრელ პირობებს ადგენს SA_SIGACTION დროშის გამოყენებით sigaction (2), მას შეუძლია მიიღოს ეს მონაცემები si_value სფეროში siginfo_t სტრუქტურის მეშვეობით, რომელიც გადაეცემა მეორე არგუმენტს დამმუშავებლისთვის. გარდა ამისა, ამ სტრუქტურის si_pid და si_uid სფეროები შეიძლება გამოყენებულ იქნეს PID- ის და რეალური მომხმარებლის ID- ის სიგნალის გაგზავნის პროცესის მისაღებად.
  3. რეალურ დროში სიგნალები უზრუნველყოფილია გარანტირებული წესით. იგივე ტიპის მრავალჯერადი რეალურ დროში სიგნალები იგზავნება იმისათვის, რომ ისინი გაიგზავნა. იმ შემთხვევაში, თუ სხვადასხვა რეალურ დროში სიგნალები იგზავნება პროცესში, ისინი იწყება დაწყებული ყველაზე დაბალი რიცხვიანი სიგნალი. (ანუ, დაბალი რიცხვითი სიგნალები უმაღლესი პრიორიტეტია).

იმ შემთხვევაში, თუ ორივე სტანდარტული და რეალურ დროში სიგნალები მიმდინარეობს პროცესი, POSIX ტოვებს ის დაუზუსტებელია, რომელიც პირველ რიგში. Linux- ს, ისევე როგორც სხვა მრავალი შესრულება, უპირატესობას ანიჭებს ამ შემთხვევაში სტანდარტული სიგნალებს.

POSIX- ის თანახმად, განხორციელება უნდა ითვალისწინებდეს სულ მცირე _POSIX_SIGQUEUE_MAX (32) რეალურ დროში სიგნალებს პროცესისთვის. თუმცა, ვიდრე პოსტი-პროცესი ლიმიტის განთავსებაზე, Linux აწესებს სისტემურ მასშტაბებს ყველა პროცესისთვის რიგით დროის რეალურ დროში სიგნალების რაოდენობას.

ეს შეზღუდვა შეიძლება იხილოთ (და პრივილეგიით) შეიცვალა / proc / sys / kernel / rtsig-max ფაილის საშუალებით. დაკავშირებული ფაილი, / proc / sys / kernel / rtsig-max , შეიძლება გამოყენებულ იქნას, რათა გაირკვეს, თუ რამდენი რეალურ დროში სიგნალები ამჟამად რიგდება.

შესაბამისობაში

POSIX.1

მნიშვნელოვანია: გამოიყენეთ კაცი ბრძანება ( % man ), რათა ნახოთ თუ როგორ ბრძანება გამოიყენება თქვენს კომპიუტერში.