GNU/Linux >> Znalost Linux >  >> Linux

Proč dochází k výstupu příkazu Ping po jeho ukončení?

Když se proces přeruší, jak vím, žádný výstup se již nevrátí. Ale vždy po přerušení ping máme statistiku provádění, a pokud vím, je součástí výstupu.

[email protected]:~$ ping 4.2.2.4
PING 4.2.2.4 (4.2.2.4) 56(84) bytes of data.
64 bytes from 4.2.2.4: icmp_seq=1 ttl=51 time=95.8 ms
64 bytes from 4.2.2.4: icmp_seq=2 ttl=51 time=92.3 ms
^C
--- 4.2.2.4 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 92.321/94.052/95.783/1.731 ms
[email protected]:~$ 

Jak to funguje?

Přijatá odpověď:

Ctrl +C způsobí, že terminál pošle SIGINT do skupiny procesů na popředí. Proces, který přijímá SIGINT, může dělat cokoli, může dokonce signál ignorovat. Běžnou reakcí na SIGINT je ladný odchod, tj. po vyčištění atd.

Váš ping je jednoduše navrženo pro tisk statistiky při SIGINT a poté pro ukončení.

Jiné nástroje nemusí po SIGINT vůbec opustit. Např. obvyklé chování interaktivního shellu (když nespouští příkaz) je vymazat příkazový řádek a překreslit výzvu.

SIGINT není jediný signál určený k ukončení příkazů. Viz manuál (man 7 signal ), existuje mnoho signálů, jejichž výchozí akcí je ukončení procesu. kill standardně odesílá SIGTERM. SIGTERM není SIGINT. Obojí lze ignorovat. SIGKILL nelze chytit, zablokovat ani ignorovat, ale měla by to být vaše poslední volba.


Linux
  1. Proč dochází k velkému zpoždění po zadání špatného hesla?

  2. Proč dlouhé zpoždění poté, co příkaz nebyl nalezen?

  3. Proč neexistuje národní prostředí „euro English“?

  1. nebylo vybráno žádné schéma k vytvoření v ... chyba

  2. Proč stdbuf nemá žádný vliv na Python?

  3. Proč LXC, když existuje linux-vserver?

  1. Nikdy nebyl lepší čas na hraní her na Linuxu

  2. Jak zastavit výstup ping?

  3. Odstranění vg a lv po odebrání fyzické jednotky