nodejs中子进程如何将 Buffer.form的文件传输给主进程
时间: 2024-02-11 09:04:25 浏览: 156
在Node.js中,子进程可以使用`process.send()`方法将数据发送给主进程。如果要传输`Buffer`类型的文件,可以将其序列化为字符串,并在发送时指定`buffer`选项为`true`,以便在主进程中重新创建`Buffer`对象。
以下是一个示例,子进程将一个文本文件读取成`Buffer`对象,然后将其发送给主进程:
子进程代码:
```javascript
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, 'example.txt');
const buffer = fs.readFileSync(filePath);
process.send({ data: buffer.toString('base64'), buffer: true });
```
主进程代码:
```javascript
const { fork } = require('child_process');
const child = fork('child.js');
child.on('message', message => {
const buffer = Buffer.from(message.data, 'base64');
if (message.buffer) {
console.log('Received buffer:', buffer);
} else {
console.log('Received message:', message);
}
});
```
在主进程中接收到子进程发送的消息后,可以使用`Buffer.from()`方法将接收到的字符串重新转换为`Buffer`对象。在此示例中,我们检查消息对象上的`buffer`选项,以确定是否需要重新创建`Buffer`对象。
阅读全文