Copyright(c) by Galaxy CD – http://www.galaxycd.com
61
Baøi 12 Tín hieäu vaø ñoàng boä
Noäi dung: Caùc tín hieäu cuûa heä thoáng, caùch duøng tín hieäu ñeå ñieàu khieån vaø ñoàng boä caùc
tieán trình.
12.1 Quaûn lyù caùc tín hieäu:
12.1.1 Caùc tín hieäu:
Trong khi thöïc hieän moät shell_script, caùc tín hieäu sau coù theå phaùt sinh:
signal
0
ra khoûi shell (exit of the shell)
signal
1
caét lieân laïc vôùi terminal (disconnection)
signal
2
Ngaét (thí duï phím DEL)
signal
3
Quit (Ctrl |)
signal
9
Dieät tieán trình (Kill process)
signal
10
Keát thuùc logic moät tieán trình
Trong moät chöông trình öùng duïng, baèng caùch duøng leänh trap, ta coù theå ñònh nghóa vieäc
caàn xöû lyù khi moät tín hieäu phaùt sinh. Leänh naøy cho pheùp gaùn moät coâng vieäc xöû lyù cho
baát cöù moät tín hieäu naøo.
12.1.2 Laäp trình phím DEL
Leänh trap khoâng ñoái lieät keâ danh saùch caùc tính hieäu vaø caùc vieäc xöû lyù töông öùng.
$
trap
Cuù phaùp gaùn moät coâng vieäc xöû lyù cho phím DEL:
$
trap ‘caùc leänh’
2
Xoùa boû taùc duïng phím DEL:
$
trap ‘’
2
Gaùn chöùc naêng ngaàm ñònh (default) cho phím DEL:
$
trap 2
Thí duï:
shell_script uncount hieån thò 5 4 3 2 1 trong caùc khoaûng thôøi gian 5 giaây, neáu
ta goõ phím DEL, hieån thò chöõ soá tieáp.
$
/Icat/ i
uncount
trap ‘continue’
2
for i in 5 4 3 2 1
do
echo $i
sleep 5
done
12.2 Quaûn lyù caùc tieán trình
12.2.1 Chaïy ngaàm (background) moät tieán trình
Moät tieán trình seõ chaïy ngaàmneáu ta theâm kyù töï & vaøo sau teân noù khi goïi.
Soá cuûa tieán trình (PID) seõ ñöôïc hieån thò treân maøn hình.
Thí duï:
chaïy shell_script uncount ngaàm: