Выбор ответа Middle Файлы и процессы спрашивают часто обновлено
spawn и exec: в чём разница
Вопрос
Нужно запустить ffmpeg, который пишет в stdout гигабайты данных. Что выбрать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: spawn: вывод идёт потоком, а не копится. spawn отдаёт stdout как поток, его можно читать кусками или направить через pipeline. exec копит весь вывод в памяти и упадёт, превысив maxBuffer (по умолчанию 1 МБ). - execSync вдобавок заблокирует event loop. - fork запускает только…
Варианты ответа
spawn: вывод идёт потоком, а не копитсяправильный ответexec, он проще и сам справится с объёмомexecSync, чтобы дождаться результата целикомfork, он подходит для любых программ
Разбор
spawn отдаёт stdout как поток, его можно читать кусками или направить через pipeline. exec копит весь вывод в памяти и упадёт, превысив maxBuffer (по умолчанию 1 МБ).
execSyncвдобавок заблокирует event loop.forkзапускает только Node-скрипты с IPC-каналом, а не произвольные программы.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.