Для чего нужны методы объекта child_process, в частности exec и spawn?
Читаю книгу по node.js, но что то не очень понял назначение этих методов. К тому же примеры приведены для unix систем.
Пробовал использовать команды win, но вылетают ошибки. Например java файл удалось запустить. а Вот выполнить команду dir не удается... Да оно и не удивительно, я вообще не понял для чего эти методы и где используются на практики, да и как вообще с ними работать.
В офф доке теже примеры что и в книге...
> выполнить команду dir не удается
потому что это внутренняя команда cmd.exe (или command.exe)
> я вообще не понял для чего эти методы и где используются на практики
В общем случае для запуска других программ из ноды.
Может быть вам это и не надо на текущем этапе изучения ноды.
В этом дочернем процессе можно выполнять команды как из консоли - метод exec.
Изначально нода однопоточная штука(физически находится в рамках одного ядра и одного потока), и эта штука сделана для того чтобы быва возможность загружать многоядерные машины.
Вообще тут мнощество применений, я на ноде конвертил видео, точнее нода была просто кидала команды в консоль> ffmpeg
sasha Все равно как то не особо понятно где и как применять это на практике. Хотя это потому что я только начал изучать ноду. Сейчас дошел еще до одного метода. fork.
let cp = require("child_process");
let child1 = cp.fork(__dirname + "/sub1.js"); // В файлах тоже под одному бесконечному циклу
let child2 = cp.fork(__dirname + "/sub2.js");
while (cp) {
console.log("Running main");
}
Запустил и получилось что то вроде работы в многопоточном режиме
Running: process 2
Running main
Running: process 2
Running main
Running: process 2
Running main
Running: process 2
Running: process 1
Running main
Running: process 1
Running main
Running: process 1
Running main
Running: process 2
Running main
Running: process 2
Running main
Running: process 2
Running main
Running: process 2
Running main
Running: process 2
Running main
Running: process 2
Running main
Running: process 2
Running main
Running: process 2
Running main
Running: process 2
Running: process 1
Running main
Running: process 1
Running: process 2
iamevg_: я не особо понял что ты хотел донести до меня этим куском кода.
На практике это применяется в специфичных случаях. Если ты будешь веб разрабом то это тебе не пригодится почти наверняка.
iamevg_: нода это не веб сервер по умолчанию. Это среда выполнения js кода. Задач в мире где нужно чтото распараллеливать хватает. В вебе делается несколько по другому обычно.