NodeJS - Fork Child Process с функциональной строкой вместо файла - PullRequest
0 голосов
/ 07 марта 2019

Я просмотрел документацию для метода fork, и он описывает только предоставление пути к файлу дочернего модуля.

Кто-нибудь знает, возможно ли это (инедокументированный) передать в дочерний модуль напрямую, а не через файл?Суть в том, что я хотел бы динамически сгенерировать модуль, а затем создать с ним дочерний процесс.

1 Ответ

0 голосов
/ 07 марта 2019

Это было бы невозможно - fork() создает совершенно другой процесс, который не разделяет контекст или переменные со своим родительским процессом.

Один из вариантов, который у вас есть, - это создание модуля внутри разветвленного процесса.и передав ему необходимые аргументы через командную строку или через временный файл, чтобы ваш ребенок мог запустить:

const data = 'something;
var childProcess = child_process.fork(__dirname + '/worker', [something]);

Затем вы можете получить доступ к аргументам от ребенка, используя process.argv[2].

Одним из ограничений этого подхода является то, что вы можете передавать только типы данных и не можете вызывать у работника какую-либо функцию в контексте его родителя.Для этого вам понадобится нечто вроде RPC между ребенком и родителем, что выходит за рамки этого ответа.

...