Heim >Backend-Entwicklung >Python-Tutorial >Wie fängt man das SIGINT-Signal in Python ab?

Wie fängt man das SIGINT-Signal in Python ab?

PHPz
PHPznach vorne
2023-09-17 10:29:021010Durchsuche

Wie fängt man das SIGINT-Signal in Python ab?

In diesem Artikel erfahren Sie, wie Sie SIGINT in Python abfangen und was Sie nach dem Abfangen tun müssen.

Nach dem Empfang des Signals führt das Signalmodul bestimmte Aktionen aus. Darüber hinaus können mit SIGINT auch Benutzerunterbrechungen über die Tastatur erfasst werden.

Erforderliche Module

Signalmodul

Der Begriff „Signal“ bezieht sich auf den Vorgang, durch den ein Programm Informationen vom Betriebssystem empfangen kann. Darüber hinaus werden Signale an Programme gesendet, wenn das Betriebssystem bestimmte Ereignisse erkennt. Das Signalmodul kann installiert werden, indem der folgende Befehl im Terminal ausgeführt wird -

pip install signal

Systemmodul

Das sys-Modul in Python bietet mehrere Funktionen und Variablen, um verschiedene Teile der Python-Laufumgebung zu ändern. Das sys-Modul kann mit dem folgenden Befehl installiert werden -

pip install os-sys

Zeitmodul

Das Zeitmodul von Python ermöglicht es Benutzern, die Zeit zu manipulieren und Informationen über die Zeit aufzuzeichnen. Das Zeitmodul ist normalerweise mit Python vorinstalliert, sodass es nicht installiert werden muss. Wenn nicht, können Sie es mit dem folgenden Befehl installieren -

pip install python-time

Lassen Sie uns Schritt für Schritt die Implementierung der SIGINT-Erfassung in Python vorstellen.

Schritt für Schritt Umsetzung

Schritt 1: Importieren Sie die Bibliothek

Zuerst müssen wir alle erforderlichen Bibliotheken mit dem Schlüsselwort import importieren. Dazu gehören die Signal-, Sys- und Sleep-Bibliotheken.

# importing signal and sys modules 
import signal
import sys
# importing sleep function from the time module
from time import sleep

Schritt 2: Erstellen Sie die Funktion

Wir erstellen nun eine Funktion, die im Falle einer Tastaturunterbrechung aufgerufen wird, indem wir zwei beliebige Parameter akzeptieren. In diesem Fall werden die Parameter sig und frame berücksichtigt.

# creating a function that accepts the two arguments 
# it is called when the user makes a keyboard interruption
def signalHandling(signal, frame):

Schritt 3: Benutzerdefinierten Handler definieren

Hier verwenden wir die Funktion signal.signal(), um einen benutzerdefinierten Handler zu definieren, der aufgerufen werden muss, wenn das Signal empfangen wird. Zusätzlich definieren wir signal.SIGINT, das durch Eingabe von Strg+C oder Strg+F2 auf der Tastatur einen Interrupt auslöst.

signal.signal(signal.SIGINT, signalHandling)

Schritt 4: Zufällige Nachricht drucken

Drucken Sie als Nächstes einige Zeilen einer zufälligen Nachricht aus, um dem Benutzer mitzuteilen, was zu tun ist, wenn die Tastatur unterbrochen wird.

# printing random message
print(' printing random messages')

Schritt 5: Schlafzeit einstellen

Stellen Sie abschließend die Python-Ruhezeit auf eine zufällige Anzahl von Sekunden ein.

# sleep time 
sleep(time in sec)

Achtung

Es gibt ein Problem mit diesem Programm: Wenn Sie es unter Windows ausführen, können Sie es stoppen und SIGINT abfangen, indem Sie Strg und F2 drücken. Wenn Sie es jedoch unter Linux ausführen, können Sie es stoppen, indem Sie gleichzeitig Strg und C drücken .

SIGINT in Python erfassen

Algorithmus (Schritte)

Unten sind die Algorithmen/Schritte aufgeführt, die befolgt werden müssen, um die erforderliche Aufgabe auszuführen. -

  • Verwenden Sie das Schlüsselwort import, um die Module signal und sys zu importieren.

  • Verwenden Sie das Schlüsselwort import, um die Funktion sleep aus dem Zeitmodul zu importieren.

  • Erstellen Sie eine Variable und initialisieren Sie ihren Wert auf 1 (wird zur Darstellung der Anzahl der Schleifenausführungen verwendet).

  • Verwenden Sie while True für eine Endlosschleife.

  • Verwenden Sie den Try-Except-Block, um Fehler/Ausnahmen zu behandeln.

  • Drucken Sie die Anzahl der Schleifenausführungen, indem Sie die obige Variable drucken.

  • Verwenden Sie die Funktion sleep(), indem Sie ihr eine Zahl als Argument übergeben, um zwischen dem Drucken jeder Zahl eine zufällige Anzahl von Sekunden lang zu schlafen.

  • Füge 1 zur Anzahl der Schleifenausführungen hinzu.

  • Verwenden Sie den Block exclusive, um Tastaturunterbrechungsausnahmen zu behandeln.

  • Drucken Sie eine beliebige Meldung aus, wenn eine Tastaturunterbrechungsausnahme auftritt.

  • Verwenden Sie die Funktion exit() des sys-Moduls, um das Programm zu schließen/beenden.

Beispiel

Das folgende Programm verwendet try/catch, um SIGINT-Ausnahmen abzufangen -

# importing signal and sys modules
import signal
import sys
# importing sleep function from the time module
from time import sleep
# initializing variable with value 1 to count the number of times the loop is executed
k = 1
# looping infinite times using a while loop
while True:
   # using try-except blocks for handling errors/exceptions
   try:
      # Printing the count of the number of times the loop is executed
      print(k)
      #sleeping for a random number of seconds time between printing of a number
      sleep(0.5)
      # Incrementing the loop execution count by 1
      k += 1
   # Handling the keyboard interruption exception using except block
   except KeyboardInterrupt:
      # printing any message if keyboard interruption exception occurs
      print("The loop has stopped!!")
      # closing/exiting the program
      sys.exit()

Ausgabe

Bei der Ausführung generiert das obige Programm die folgende Ausgabe:

1
2
3
4
5
6
7
8
9
10
11
12
13
The loop has stopped!!

In diesem Programm verwenden wir die Try-Catch-Anweisung, um Tastaturausnahmen zu behandeln. Beim Ausführen der Zahlenerhöhungsschleife im Try-Block haben wir den Tastatur-Interrupt im Catch-Block abgefangen.

Fazit

In diesem Artikel haben wir gelernt, wie man SIGINT mit Python erfasst. Wir haben gelernt, wie man Try/Catch-Anweisungen verwendet, um denselben Zweck zu erreichen. Mit Try- und Catch-Anweisungen können Ausnahmen wie Division durch 0 und Tastaturunterbrechungen behandelt werden.

Das obige ist der detaillierte Inhalt vonWie fängt man das SIGINT-Signal in Python ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen