Skip to main content

Σήμα - εντολή Linux / Unix

Revolution OS - 2001 - Multilingual (16 languages) (Ιούνιος 2025)

Revolution OS - 2001 - Multilingual (16 languages) (Ιούνιος 2025)
Anonim

Το Linux υποστηρίζει και αξιόπιστα σήματα POSIX (στο εξής "τυπικά σήματα") και σήματα POSIX σε πραγματικό χρόνο.

Πρότυπα σήματα

Το Linux υποστηρίζει τα τυπικά σήματα που αναφέρονται παρακάτω. Αρκετοί αριθμοί σημάτων εξαρτώνται από την αρχιτεκτονική, όπως υποδεικνύεται στη στήλη "Τιμή". (Όπου δίδονται τρεις τιμές, η πρώτη ισχύει συνήθως για τα alpha και sparc, το μέσο για το i386, ppc και sh, και το τελευταίο για τα mips.

A - υποδηλώνει ότι ένα σήμα δεν υπάρχει στην αντίστοιχη αρχιτεκτονική.)

Οι καταχωρίσεις στη στήλη "Δράση" του πίνακα καθορίζουν την προεπιλεγμένη ενέργεια για το σήμα, ως εξής:

Ορος

Η προεπιλεγμένη ενέργεια είναι να τερματίσετε τη διαδικασία.

Ign

Η προεπιλεγμένη ενέργεια είναι να αγνοήσετε το σήμα.

Πυρήνας

Η προεπιλεγμένη ενέργεια είναι να τερματίσετε τη διαδικασία και τον πυρήνα εκκενώσεων.

Να σταματήσει

Η προεπιλεγμένη ενέργεια είναι να σταματήσετε τη διαδικασία.

Πρώτα τα σήματα που περιγράφονται στο αρχικό πρότυπο POSIX.1.

ΣήμααξίαΔράσηΣχόλιο
ή το θάνατο της διαδικασίας ελέγχου
SIGINT2ΟροςΔιακοπή από το πληκτρολόγιο
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 BSD)
SIGXCPU24,24,30ΠυρήναςΥπέρβαση χρονικού ορίου CPU (4.2 BSD)
SIGXFSZ25,25,31ΠυρήναςΥπέρβαση του ορίου μεγέθους αρχείου (4.2 BSD)

Μέχρι και συμπεριλαμβανομένου του Linux 2.2, η προεπιλεγμένη συμπεριφορά για τοSIGSYS, SIGXCPU, SIGXFSZ, και (σε ​​αρχιτεκτονικές διαφορετικές από SPARC και MIPS)SIGBUS ήταν να τερματίσει τη διαδικασία (χωρίς κεντρική χωματερή). (Σε μερικές άλλες Unices η προεπιλεγμένη ενέργεια γιαSIGXCPU καιSIGXFSZ είναι να τερματίσει τη διαδικασία χωρίς κεντρική χωματερή.) Το Linux 2.4 συμμορφώνεται με τις απαιτήσεις POSIX 1003.1-2001 για αυτά τα σήματα, τερματίζοντας τη διαδικασία με μια χωματερή πυρήνα.

Στη συνέχεια διάφορα άλλα σήματα.

ΣήμααξίαΔράσηΣχόλιο
SIGEMT7,-,7Ορος
SIGSTKFLT-,16,-ΟροςΣφάλμα στοίβας στον coprocessor (δεν χρησιμοποιείται)
SIGIO23,29,22ΟροςI / O είναι τώρα δυνατή (4.2 BSD)
SIGCLD-,-,18IgnΈνα συνώνυμο για το SIGCHLD
SIGPWR29,30,19ΟροςΣφάλμα τροφοδοσίας (Σύστημα V)
SIGINFO29,-,- Ένα συνώνυμο για το SIGPWR
SIGLOST-,-,-ΟροςΤο κλείδωμα αρχείου χάθηκε
SIGWINCH28,28,20IgnΠαράθυρο αλλαγής μεγέθους παραθύρου (4.3 BSD, Sun)
ΑΣΦΑΛΕΙΑΣ-,31,-ΟροςΑχρησιμοποίητο σήμα (θα είναι SIGSYS)

(Το σήμα 29 είναιSIGINFO / SIGPWR σε ένα άλφα αλλάSIGLOST σε ένα sparc.)

SIGEMT δεν καθορίζεται στο POSIX 1003.1-2001, αλλά εμφανίζεται στις περισσότερες άλλες Unices, όπου η προεπιλεγμένη ενέργεια της είναι συνήθως να τερματίσει τη διαδικασία με μια κεντρική χωματερή.

SIGPWR (το οποίο δεν καθορίζεται στο POSIX 1003.1-2001) τυπικά αγνοείται από προεπιλογή σε αυτές τις άλλες μονάδες όπου εμφανίζεται.

SIGIO (που δεν καθορίζεται στο 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 σημαία στοσιγουριά(2) τότε μπορεί να λάβει αυτά τα δεδομένα μέσω του si_value τομέα της siginfo_t δομή δόθηκε ως το δεύτερο επιχείρημα στον χειριστή. Επιπλέον, το si_pid και si_uid πεδία αυτής της δομής μπορούν να χρησιμοποιηθούν για να αποκτήσουν το PID και το πραγματικό αναγνωριστικό χρήστη της διαδικασίας που στέλνει το σήμα.
  3. Τα σήματα σε πραγματικό χρόνο παρέχονται με εγγυημένη σειρά. Πολλαπλά σήματα πραγματικού χρόνου του ίδιου τύπου παρέχονται με τη σειρά που έχουν σταλεί. Εάν αποστέλλονται διαφορετικά σήματα σε πραγματικό χρόνο σε μια διαδικασία, αυτά παρέχονται αρχίζοντας με το σήμα με το χαμηλότερο αριθμό. (Δηλαδή, τα σήματα χαμηλού αριθμού έχουν την υψηλότερη προτεραιότητα.)

Εάν εκκρεμούν και τα δύο στάνταρ και τα σήματα σε πραγματικό χρόνο για μια διαδικασία, το POSIX το αφήνει απροσδιόριστο το οποίο παραδίδεται πρώτα. Το Linux, όπως πολλές άλλες εφαρμογές, δίνει προτεραιότητα σε τυποποιημένα σήματα σε αυτή την περίπτωση.

Σύμφωνα με το POSIX, μια υλοποίηση θα πρέπει να επιτρέπει τουλάχιστον τα _POSIX_SIGQUEUE_MAX (32) σήματα πραγματικού χρόνου να τεθούν σε αναμονή σε μια διαδικασία. Ωστόσο, αντί να θέτει ένα όριο ανά διεργασία, το Linux επιβάλλει ένα όριο σε όλο το σύστημα στον αριθμό των σημάτων σε ουρά σε πραγματικό χρόνο για όλες τις διαδικασίες.

Αυτό το όριο μπορεί να προβληθεί (και με προνόμιο) αλλάξει μέσω του / proc / sys / kernel / rtsig-max αρχείο. Ένα σχετικό αρχείο, / proc / sys / kernel / rtsig-max , μπορεί να χρησιμοποιηθεί για να μάθετε πόσα σήματα σε πραγματικό χρόνο βρίσκονται σήμερα στην ουρά.

ΣΥΜΜΟΡΦΩΣΗ ΣΤΗΝ

POSIX.1

Σπουδαίος: Χρησιμοποιήστε το άνδρας εντολή ( % άνδρας ) για να δείτε πώς χρησιμοποιείται μια εντολή στον υπολογιστή σας.