Как в Linux/bash предотвратить асинхронные команды?

У меня есть make-файл, который вызывает внешние сценарии сборки.

Некоторые из этих скриптов (которые я не могу изменить) используют разветвленные/фоновые команды (или асинхронные, как их называет руководство bash).

Это означает, что следующая строка в make-файле может начаться до завершения некоторых предыдущих команд, создавая состояние гонки.

Мне каким-то образом нужно либо дождаться разветвленного процесса и всех его дочерних элементов, либо просто запретить выполнение любой команды или подкоманды последующих сценариев в фоновом режиме.

Есть ли способ предотвратить это, т.е. отключить суффикс амперсанда '&' для команд в текущей и дочерней подоболочках?

1 ответ

Один из возможных способов — создать копию этих скриптов и удалить конструкции с помощью команды make some для запуска в фоновом режиме. Имейте в виду, что вы можете не захотеть удалять все&автоматически, потому что вы можете испортить такие команды, как:

      command && command 

Другой возможный способ — запросить разрешение на редактирование скриптов (вместо их копирования).

Другие вопросы по тегам