有没有办法在新进程中的bash脚本中运行函数?

时间:2014-05-11 08:10:45

标签: bash terminal

我需要在完全独立的进程中运行炸弹功能,而不是子进程,因此当其中一个新终端窗口关闭时,整个脚本不会关闭。我试过用&结束这一行。但这不起作用,因为它创建了一个子流程。

#!/bin/bash

bomb(){
    while :
    do
        x-terminal-emulator -e bomb
    done
}

point(){
    score=$(<score.txt)
    let score=$score+1
    echo $score > score.txt
}

funcXkill(){
    while :
    do
        xkill
        point
    done
}


funcXkill &
bomb

1 个答案:

答案 0 :(得分:0)

子shell,父进程和I / O.

在unix下,如果一个进程死掉,他们会向他的tty发送一个 HUP 信号。

所以要分离一个进程,你必须关闭他的I / O:

subfunction </dev/null >/dev/null 2>&1 &

您甚至可以使用nohup命令:

nohup subfunction &

请参阅man nohup