Выбор ответа Middle Файлы и процессы спрашивают часто обновлено

spawn и exec: в чём разница

Вопрос

Нужно запустить ffmpeg, который пишет в stdout гигабайты данных. Что выбрать?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: spawn: вывод идёт потоком, а не копится. spawn отдаёт stdout как поток, его можно читать кусками или направить через pipeline. exec копит весь вывод в памяти и упадёт, превысив maxBuffer (по умолчанию 1 МБ). - execSync вдобавок заблокирует event loop. - fork запускает только…

Варианты ответа

  1. spawn: вывод идёт потоком, а не копитсяправильный ответ
  2. exec, он проще и сам справится с объёмом
  3. execSync, чтобы дождаться результата целиком
  4. fork, он подходит для любых программ

Разбор

spawn отдаёт stdout как поток, его можно читать кусками или направить через pipeline. exec копит весь вывод в памяти и упадёт, превысив maxBuffer (по умолчанию 1 МБ).

  • execSync вдобавок заблокирует event loop.
  • fork запускает только Node-скрипты с IPC-каналом, а не произвольные программы.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.