如何启动多个子进程,它会自动接收信号发送给家长(How to launch multiple chi

2019-10-29 04:20发布

我想创建一个bash脚本启动并行的子进程。 有没有办法做到这一点,使孩子的脚本仍然收到发送到父进程的信号?

以下是大致我多么想启动子进程,但是这不符合我的信令标准。

for (( i=0; i<9; i++ ))
   {
   { echo $i start ; sleep 5s ; echo $i complete ; } &
   }
wait

因为这在C-程序自动工作(使用fork/exec ),相信它应该有可能在不使用的trap的基于信号转发-其中信号被转发之前本身可能被中断。

其中一个解决方法是使用GNU-parallel 。 我不知道它的机制,但它解决了这个问题-只要你愿意调整你的环插入xargs风格语法。 GNU-parallel ,如果解决这个问题--semaphore选项使用。

我认为,答案就在这里,但我不知道怎么翻译它来砸: 信号发送给两个小孩和父母的过程 。

Answer 1:

听起来好像你的罚款使用GNU并行 - 只是没有xargs的风格。

这将是确定使用的功能呢?

doit() {
    # Trap 2 signals to show they are being given to the function
    trap 'echo you hit Ctrl-C/Ctrl-\, now exiting..; exit' SIGINT SIGQUIT
    echo $1 start
    sleep 5s
    echo $1 complete
}
export -f doit
seq 10 | parallel -u doit

或避免管:

parallel -u doit ::: {1..10}


文章来源: How to launch multiple child processes that will automatically receive signals sent to parent