linux - 是否可以在 shell 脚本中创建非子进程?

标签 linux shell fork multiprocessing

我正在使用 shell process pool API在 Github 上,一个脚本,如下所示

    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 行在那里时, job_pool_wait中有一个wait命令,它等待所有子进程结束,如果没有这样的tcpdump行,则符合预期。 但是我想在所有子进程完成之前捕获一些东西,所以我必须使用 tcpdump。在这个脚本中,tcpdump 进程是一个子进程, job_pool_wait 也会等待 tcpdump 进程结束,这不是预期的。

所以一个解决方案就是让tcpdump不是子进程, 我该怎么做, 或任何其他解决方案? 谢谢!

最佳答案

您应该能够在后台的子 shell 中运行 tcpdump:

(tcpdump -i eth0 -w tempcap &)

这应该可以防止它显示为您脚本的直接后代。

关于linux - 是否可以在 shell 脚本中创建非子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16402157/

相关文章:

shell - 奇怪的 txt 行为

c/中断的系统调用/fork 与线程

linux - WordPress 无法安装主题

linux - 如何在linux中使用命令行参数编写shell脚本程序将源文件复制到目标文件

java - 如何将重复调用的外部进程集成到Java webapp中?

使用 sigaction 捕获 SIGCHLD

c - 我应该如何修改 C 中的 fork() 以使其运行良好?

c - 键盘中断处理程序给出空值

python - 继电器开关和控件:学习电子编程...

linux - 如何对父目录在 $PATH 中的 bash 脚本进行 sudo?