Tcpdump will, if not run with the -c flag, continue capturing packets +until it is interrupted by a SIGINT signal (generated, for example, b +y typing your interrupt character, typically control-C) or a SIGTERM +signal (typically generated with the kill(1) command); if run with th +e -c flag, it will capture packets until it is interrupted by a SIGIN +T or SIGTERM signal or the specified number of packets have been proc +essed.
The newer threads probably now requires you to setup specific signal handlers in the thread running tcpdump, so that it can exit. Carefully read threads and the section on Signalling.... you probably need a
in your sub codeblock.$SIG{'FOO'} = sub { do_foo; };
Hopefully, whatever that tcpdumd is doing isn't considered IO of some sort. Because if it is, Signals will not work on threads stuck in IO, from what the perldoc says. Then you might have to fork tcpdump, so as to get it's pid, then kill it by $pid.
I am out of votes for today, but I would have ++'d you for the well written description of your problem :-)
In reply to Re: Threads, bash, and networking
by zentara
in thread Threads, bash, and networking
by morganda
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |