Daca am inteles corect problema se pune astfel: cum rescriem scriptul de mai
sus astfel incat sa nu se piarda semnale, dar nici sa nu omoare procesorul ?
Cam asta ar fi ideea.
La mine scriptul , lansat la un terminal
$cat tst1.sh
#! /bin/bash
sig_usr1()
{
trap sig_usr1 SIGUSR1
echo $t
t=$((t+1))
}
trap sig_usr1 SIGUSR1
echo $$
while true; do read; done
$ ./tst1.sh
16387
1
2
3
4
5
6
7
$
La altul
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 16387 ; done
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 16387 ; done
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 16387 ; done
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 16387 ; done
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 16387 ; done
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 16387 ; done
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 16387 ; done
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 16387 ; done
nu primeste decat primul semnal USR1 din ciclu, restul se pierd.
In schimb, daca la daca se asteapta o anumita perioada (foarte scurta) de timp
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 166387;usleep 1000 ; done
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 166387;usleep 100 ; done
$ for ((i=0; i < 100; i++)); do kill -SIGUSR1 166387;usleep 10 ; done
Sunt primite toate
.........
10
11
12
13
14
15
16
17
18
19
20
21
22
24
25
26
27
.........
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
301
302
303
304
305
306
$
$
_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug