我有一个调用外部构建脚本的 makefile。
其中一些脚本(我无法更改)使用了分叉/后台的命令(或异步的,正如 bash 手册所命名的)
这意味着 makefile 中的下一行可以在某些前一个命令完成之前开始 - 从而产生竞争条件。
我不知何故需要等待分叉的进程及其所有子进程,或者只是阻止在后台运行后续脚本的任何命令或子命令。
有没有办法可以防止这种情况,即禁用当前和子子 shell 中的命令的“&”后缀?
答案1
一种可能的方法是创建这些脚本的副本,并使用 make some 命令在后台运行来删除构造。请注意,您可能不想自动删除所有内容,&
因为您可能会弄乱以下命令:
command && command
另一种可能的方法是请求编辑脚本的权限(而不是复制它们)