electron+vue中主进程使用spawn打开了一个electron应用并且stdin.write传值,子进程process.stdin读取不到传递的值
时间: 2023-11-22 13:56:05 浏览: 143
在使用 spawn 方法创建子进程时,需要注意一下几点:
1. 子进程的标准输入、输出和错误流都是通过管道实现的,需要手动绑定事件处理程序才能读取、写入数据。
2. 子进程默认是以异步的方式运行的,因此需要等待子进程退出后才能获取到所有的输出。
3. 如果子进程需要读取大量的数据,建议使用 spawnSync 方法代替 spawn 方法。
现在问题可能出在你没有正确地传递参数给子进程。下面是一个示例代码,可以帮助你更好地理解如何使用 spawn 方法:
```javascript
const { spawn } = require('child_process');
const child = spawn('node', ['app.js']);
// 绑定事件处理程序
child.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
child.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
child.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
// 向子进程发送数据
child.stdin.write('hello world\n');
```
在这个例子中,我们使用 spawn 方法创建了一个名为 `child` 的子进程,并且绑定了 `stdout`、`stderr` 和 `close` 事件处理程序。然后,我们使用 `child.stdin.write` 方法向子进程发送了一条消息。
如果你的问题仍然存在,可以尝试输出调试信息,以便更好地理解发生了什么。你可以在子进程的代码中添加一些 `console.log` 语句,以便查看传递给子进程的参数是否正确。
阅读全文