Не удается получить потоковый канал от дочернего процесса - PullRequest
1 голос
/ 07 июля 2019

В parent.js

child = fork(filePath,[],{silent : true});
child.send({
        msgtype: "path",
        path: path,
        options: options,
      });
child.stdout.on("data",(data)=>{
     console.log(data);
})

в дочернем process.js

let createQueue = require("queue-async");
let readdirp = require("readdirp");

process.on("message", function(msg) {
  let files = "";
  if (msg && msg.msgtype === "path") {
    let pathname = msg.path;
    files = readdirp(pathname);
    process.send({
      msg: "detials",
      details: msg
    });
    files.on("error", e => {
      process.send({
        msg: "killMe",
        details: null
      });
    });
    files.on("end", () => {
      process.send({
        msg: "killMe",
        details: null
      });
    });
    files.pipe(process.stdout)
  }
});

Моя проблема, у меня нет ошибок, и дочерний процесс не завершен.

Но child.stdout.on("data") не запускается, я не знаю, что происходит в фоновом режиме.

Почему я не могу получить данные от ребенка ??Что мне не хватает, может кто-нибудь помочь, пожалуйста ??

1 Ответ

2 голосов
/ 07 июля 2019

В parent.js вы должны изменить child.stdout.on на child.on, чтобы получить то, что отправляет дочерний процесс.

Также вы должны инвертировать логику в parent.js

  1. child.on
  2. child.send

Пожалуйста, посмотрите на https://nodejs.org/api/child_process.html#child_process_subprocess_send_message_sendhandle_options_callback

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...