Ответы пользователя по тегу Конвейер
  • Как работают pipe в UNIX?

    Вы используете блокирующее чтение/запись, поэтому операция чтения будет ожидать, пока не появятся данные. На время блокировки процесс будет засыпать, дополнительно для этого ничего делать не надо. Если записывающий процесс будет писать достаточно большой объем данных и читающий процесс не будет успевать считывать данные - то будет переполнен буфер pipe'а, тогда блокирована будет операция записи и "спать" будет пишущий процесс.
    Вот если вы хотите избежать блокировок, то необходимо переводить дескрипторы в неблокирущий режим и использовать select()/poll() или аналоги.

    На уровне ОС pipe() это просто буфер памяти в который данные могут быть записаны и считаны через дискриптор.
    Ответ написан
    2 комментария