![在 Linux/bash 中如何阻止异步命令?](https://linux22.com/image/771374/%E5%9C%A8%20Linux%2Fbash%20%E4%B8%AD%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%E5%BC%82%E6%AD%A5%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我有一个调用外部构建脚本的 makefile。
其中一些脚本(我无法更改)使用了分叉/后台的命令(或异步的,正如 bash 手册所命名的)
这意味着 makefile 中的下一行可以在某些前一个命令完成之前开始 - 从而产生竞争条件。
我不知何故需要等待分叉的进程及其所有子进程,或者只是阻止在后台运行后续脚本的任何命令或子命令。
有没有办法可以防止这种情况,即禁用当前和子子 shell 中的命令的“&”后缀?
答案1
一种可能的方法是创建这些脚本的副本,并使用 make some 命令在后台运行来删除构造。请注意,您可能不想自动删除所有内容,&
因为您可能会弄乱以下命令:
command && command
另一种可能的方法是请求编辑脚本的权限(而不是复制它们)