2012-09-13 12:51:29 +0000 2012-09-13 12:51:29 +0000
88
88

Welche Auswirkung hat die Tastenkombination STRG + Z auf eine Unix\Linux-Anwendung

Ich war neugierig und verwirrt, was genau ist das Verhalten von CTRl+Z.

Ich weiß, wenn ein Prozess im Vordergrund läuft und wir ctrl+z drücken, geht er in den Hintergrund.

Aber was genau passiert.

Macht er seine Arbeit weiter, oder wird er angehalten und bleibt an dem Punkt stehen, an dem er war.

Und wenn es an diesem Punkt gestoppt wird, was bedeutet dann der Hintergrundjob.

Antworten (4)

74
74
74
2012-09-13 12:57:13 +0000

Ein “Hintergrund-Job” ist einfach einer, der nicht mit dem Benutzer interagiert – er steuert das tty nicht und macht einfach sein Ding (in der Regel lautlos). Ein Vordergrund-Job ist das Gegenteil, er hält die Kontrolle über das tty, um mit dem Benutzer zu interagieren.

Control-Z suspendiert den letzten Vordergrundprozess (den letzten Prozess, der mit dem tty interagiert hat) (es sei denn, dieser Prozess unternimmt Schritte, um die Suspendierung zu ignorieren, wie es Shells normalerweise tun). Dies bringt Sie im Allgemeinen zurück zu Ihrer Shell, von der aus Sie im Allgemeinen den Befehl bg eingeben können, um den gerade angehaltenen Prozess in den Hintergrund zu verschieben (und ihn weiterlaufen zu lassen) oder fg, um ihn wieder in den Vordergrund zu bringen.

58
58
58
2012-09-13 12:57:09 +0000

Durch Drücken von Strg+Z wird das Signal TSTP an Ihren Prozess gesendet. Dadurch wird die Ausführung angehalten (der Kernel plant keine weitere CPU-Zeit für den Prozess ein) und der Prozess wartet auf ein CONT, um die Verarbeitung fortzusetzen.

Sie können dies über kill -TSTP und kill -CONT emulieren/replizieren (da kill ein nominiertes Signal an Ihren Prozess sendet, trotz des Namens!)

Die Shell hat die Funktionalität, den Prozess zu ‘hinterleuchten’, aber dies ist eine Beziehung zwischen der Shell und dem Prozess. Der Prozess selbst hat nicht wirklich das Konzept von ‘Hintergrund’ oder ‘Vordergrund’.

Siehe hier für weitere Informationen.

15
15
15
2012-09-13 13:02:52 +0000

Betrachten Sie diesen Befehl, der auf meinem Laptop ca. 4,5 Sekunden dauert:

echo 2^10000000 | bc -lq | wc -c

Wenn Sie Strg+Z drücken, wird die Berechnung angehalten. Sie haben die Möglichkeit, die Berechnung mit fg im Vordergrund fortzusetzen oder sie mit bg im Hintergrund fortzusetzen. Letzteres ist mehr oder weniger gleichbedeutend mit der Ausführung:

echo 2^10000000 | bc -lq | wc -c &
9
9
9
2012-09-13 12:57:30 +0000

Ein Prozess wird angehalten und durch Drücken von Strg+z gestoppt. Mit fg können Sie den angehaltenen Job in den Vordergrund bringen, mit bg können Sie ihn im Hintergrund laufen lassen.

Siehe http://linuxreviews.org/beginner/jobs/ für weitere Informationen.