![如何在 Bash 脚本中使用 vfork](https://linux22.com/image/1536817/%E5%A6%82%E4%BD%95%E5%9C%A8%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%20vfork.png)
如果我们想fork
在 bash 脚本中(甚至在命令行中)执行任何操作,我们可以简单地用 $() 或反引号将其括起来。例如;
echo $(ls)
- 这将分叉当前环境并在(分叉的)子 shell 中运行 ls
我们如何使用vfork
(http://man7.org/linux/man-pages/man2/vfork.2.html)而不是标准分叉功能?
答案1
在 bash 源代码中执行grep -Ri vfork
没有找到任何匹配,因此无法直接从 bash 使用 vfork。
如果您只是想要调用子进程并阻止父进程,那么您的子 shell 示例已经做到了这一点。否则,echo
最多只能得到不完整的结果。
您还可以使用 在后台运行命令,&
然后使用wait
让父进程阻塞直到子进程完成。