将前台进程从后台进程放入后台

将前台进程从后台进程放入后台

是否可以使用 bash 将一个进程从另一个后台进程放入后台?

例如,如果我们有以下代码:

function check_if_server_running {
    while [ server_running -ne true ]
        curl localhost:8000
    done
    bg %-
}

check_if_server_running &
./startServer

# Some other code...

我们可以用一些东西替换 bg %- 以使 ./startServer 一旦启动就在后台运行吗?通常 bg %- 将最后一个进程放在后台,但它对我不起作用

答案1

不,这种方式实际上行不通,因为bgfg命令仅在交互的shell 的模式,当您已经在后台运行函数或子 shell 时,绝对不是这种情况......

(此外,bg它本身不会将已经在后台的作业放入后台,它只是在后台恢复已停止的作业,您需要先使用Ctrl+停止作业Z。)

考虑重新编写代码以在后台启动服务器,然后等到它在前台运行:

function wait_for_server_running {
    while ! server_running; do
        curl localhost:8000
    done
}

./startServer &
wait_for_server_running

# Some other code...

这看起来与您想要实现的目标相似,对吧?

相关内容