gpt4 book ai didi

javascript - 无法从子进程获取管道流

转载 作者:行者123 更新时间:2023-11-30 13:57:39 24 4
gpt4 key购买 nike

在 parent.js 中

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

在子进程中

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") 没有被触发,我不知道后台发生了什么。

为什么我无法从 child 那里获取数据??我缺少什么,有人可以帮忙吗??

最佳答案

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

关于javascript - 无法从子进程获取管道流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56921120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com