Еще одним отличием является поведение при блокировке open()
входного файла.
Например, если предположить, что вводом является FIFO без пишущих, один вызов не вызовет дочерние программы, пока не будет открыт входной файл, а другой вызовет два процесса:
prog ... < a_fifo # 'prog' not launched until shell can open file
cat a_fifo | prog ... # 'prog' and 'cat' are running (latter may block on open)
На практике это редко имеет значение, за исключением искусственных обстоятельств. prog
может периодически регистрировать или выполнять некоторую работу по очистке, например, в ожидании ввода, что может потребоваться, даже если ввод недоступен. (Почему бы prog
не было достаточно изощренным, чтобы открыть свой собственный неблокирующий ввод?)