确定bash脚本是背景还是前景

时间:2018-10-30 16:16:06

标签: bash unix

我正在创建一个脚本,仅在进程处于前台时才希望将其输出到stdout。理想的行为是您应该能够使脚本后台运行,并且仍能在不阻塞stdout的情况下运行它,但是您应该能够再次使脚本前台以检查脚本的进度。

我反复看到的摘录是以下案例陈述:

function example() {
  while true; do
    case $(ps -o stat= -p $$) in
      *+*) echo "Running in foreground" ;; # this works at first, but after `bg` and then `fg` no longer works (why?)
      *) echo "Running in background" ;; ## this works
    esac
    sleep 0.25
  done
}

这本来可以工作-当我启动脚本时,它会正确打印“在前台运行”。但是,对脚本进行后台处理并重新进行前景处理后,即使将脚本带回前台也将导致其在后台运行”

Running in foreground
Running in foreground
^Z[1]  + 82818 suspended  example
$ fg
[1]  + 82818 continued  example
Running in background
Running in background

还有另一种确定应用程序处于前台还是后台的方法吗?

0 个答案:

没有答案