Ввод во время параллельного выполнения
Два процесса не могут одновременно получать ввод с одного и того же устройства. Чтобы убедиться, что только один рецепт пытается получить ввод с терминала одновременно, make аннулирует стандартные потоки ввода всех работающих рецептов, кроме одного. Если другой рецепт попытается прочитать стандартный ввод, это обычно приведет к ошибке (сигнал «Broken pipe»).
Непредсказуемо, какой рецепт получит действительный стандартный поток ввода (который будет поступать с терминала или откуда бы вы ни перенаправили стандартный ввод make). Первый запущенный рецепт всегда получит его первым, а первый рецепт, запущенный после завершения предыдущего, получит его следующим и так далее.
Мы изменим работу этого аспекта make если найдем лучшую альтернативу. Тем временем, вы не должны полагаться на использование стандартного ввода в любом рецепте, если вы используете функцию параллельного выполнения; но если вы не используете эту функцию, стандартный ввод будет работать нормально во всех рецептах.
Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/Parallel-Input.html