electron+vue中打开一个其他的electron应用并且使用stdin.write传值,但是子进程使用 process. stdin接收不到主进程传递的参数
时间: 2023-11-22 17:56:29 浏览: 248
【计算机毕业设计】基于Electron + Vue的桌面音乐助手的设计与实现【源码+lw+部署文档+讲解】
在 Electron 中,可以通过 `child_process.spawn` 来启动一个新的进程,然后通过 `child.stdin.write` 方法向子进程写入数据。如果子进程无法接收到主进程传递的参数,可能是因为子进程未正确监听 stdin 数据。
你可以尝试在子进程中监听 `process.stdin` 的 `data` 事件,如下所示:
```javascript
// 子进程代码
process.stdin.on('data', data => {
console.log(data.toString())
})
```
在主进程中,可以通过 `child.stdout.on` 监听子进程的标准输出,如下所示:
```javascript
const { spawn } = require('child_process')
const child = spawn('node', ['child.js'])
child.stdout.on('data', data => {
console.log(data.toString())
})
```
你也可以尝试使用 `child_process.exec` 方法来执行子进程,这种方法会自动等待子进程执行完毕后返回输出结果,如下所示:
```javascript
const { exec } = require('child_process')
exec('node child.js 123', (err, stdout, stderr) => {
if (err) {
console.error(err)
} else {
console.log(stdout)
}
})
```
其中,`child.js` 是子进程的代码文件,`123` 是传递给子进程的参数。在子进程中,可以通过 `process.argv` 来获取传递的参数。
阅读全文