我在 Github 上使用shell 进程池 API来编写脚本,如下所示
function foobar()
{
mytask($1);
}
job_pool_init 100 0
tcpdump -i eth0 -w tempcap & #
for i in `seq 1 4`;do
mesg="hello"$i
job_pool_run foobar $mesg
sleep 5
done
job_pool_wait
pkill tcpdump #
echo 'all finish'
job_pool_shutdown
如果我注释了 tcpdump 行,那么它可以正常工作,正如预期的那样,但是当 tcpdump 行在那里时, 里面有一个wait
命令job_pool_wait
,等待所有子进程结束,如果没有这样的 tcpdump 行,那就是正如预期的那样。但是我想在所有子进程完成之前捕获一些东西,所以我必须使用 tcpdump。在这个脚本中,tcpdump 进程是一个子进程,
job_pool_wait
也会等待 tcpdump 进程的结束,这是意料之外的。
所以一个解决方案是让 tcpdump 不是子进程,我该怎么做,或任何其他解决方案?谢谢!</p>