Как в Linux/bash предотвратить асинхронные команды?
У меня есть make-файл, который вызывает внешние сценарии сборки.
Некоторые из этих скриптов (которые я не могу изменить) используют разветвленные/фоновые команды (или асинхронные, как их называет руководство bash).
Это означает, что следующая строка в make-файле может начаться до завершения некоторых предыдущих команд, создавая состояние гонки.
Мне каким-то образом нужно либо дождаться разветвленного процесса и всех его дочерних элементов, либо просто запретить выполнение любой команды или подкоманды последующих сценариев в фоновом режиме.
Есть ли способ предотвратить это, т.е. отключить суффикс амперсанда '&' для команд в текущей и дочерней подоболочках?
1 ответ
Один из возможных способов — создать копию этих скриптов и удалить конструкции с помощью команды make some для запуска в фоновом режиме. Имейте в виду, что вы можете не захотеть удалять все&
автоматически, потому что вы можете испортить такие команды, как:
command && command
Другой возможный способ — запросить разрешение на редактирование скриптов (вместо их копирования).