`read` 命令导致分叉进程在前台发生
Posted
技术标签:
【中文标题】`read` 命令导致分叉进程在前台发生【英文标题】:`read` command causes forked process to happen in foreground 【发布时间】:2022-01-15 12:16:59 【问题描述】:您好,我正在尝试编写一个 bash 脚本以在后台启动 QEMU 并等待用户按键以继续执行该脚本。
这是我目前拥有的:
setup_for_greengrass # these are functions
run_qemu & # fork function and try to run in the background
echo "Press anything to continue once VM is finished booting...\n"
read fullname # wait for user to press a key
install_greengrass
但是,我在终端中看到的是 QEMU 控制台,我无法继续使用该脚本。如果我 fork 进程并且那里没有 read
命令,它会按预期工作并且 QEMU 控制台不会显示并且脚本会继续前进。
关于如何以不同方式分叉 QEMU 进程或等待用户输入的任何建议?
【问题讨论】:
那么在没有控制台的情况下运行 qemu? @KamilCuk 我想在后台运行 qemu,这样它就不会阻塞我的脚本的其余部分 【参考方案1】:我想通了...在 bash 版本 4 或更高版本中,zsh 支持这个名为 coproc
的命令。
https://www.geeksforgeeks.org/coproc-command-in-linux-with-examples/
https://***.com/a/68407430/4397021
https://www.zsh.org/mla/users/2011/msg00095.html
所以编写脚本如下,它应该在后台启动 qemu 并让脚本继续前进。
#!/bin/zsh # Make sure to use zsh or upgrade your version of bash
setup_for_greengrass
coproc run_qemu # launch qemu in the background
echo "Press anything to continue once VM is finished booting...\n"
read fullname # wait for user to press a key
install_greengrass
【讨论】:
以上是关于`read` 命令导致分叉进程在前台发生的主要内容,如果未能解决你的问题,请参考以下文章