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.