electron+vue中打开一个其他的electron应用并且使用stdin.write传值获取不到
时间: 2023-11-22 15:56:38 浏览: 42
如果你要在 Electron 中打开另一个 Electron 应用,并发送一些数据到它的标准输入,可以使用 Node.js 的 `spawn` 函数来实现。 下面是一个示例代码:
```javascript
const { spawn } = require('child_process');
// 打开另一个 Electron 应用
const child = spawn('path/to/electron', ['path/to/app']);
// 向标准输入中写入数据
child.stdin.write('data to send\n');
// 结束输入流
child.stdin.end();
```
如果你在 Electron 中运行这个代码,但是无法从另一个应用程序中获取到数据,可能是因为另一个应用程序没有正确处理标准输入。 你需要在另一个应用程序中处理标准输入并读取数据。 在你的 Electron 应用程序中可以使用 `child.stdout` 属性读取另一个应用程序的标准输出。
如果你还有问题,请提供更多细节,我可以帮你更好地解决问题。
相关问题
electron+vue中打开一个其他的electron应用并且使用stdin.write传值,但是子进程使用 process. stdin接收不到主进程传递的参数
在 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` 来获取传递的参数。
electron+vue中主进程使用spawn打开了一个electron应用并且stdin.write传值,子进程如何接收
在子进程中,可以通过process.stdin来读取从父进程中传递过来的数据。具体步骤如下:
1. 在子进程中监听process.stdin事件,以便在有数据传入时能够及时接收到。
```javascript
process.stdin.on('data', function(data) {
// 处理从父进程传过来的数据
});
```
2. 在父进程中,通过spawn函数打开一个子进程,并将需要传递的数据通过stdin.write()方法写入到子进程的标准输入流中。
```javascript
const child = require('child_process').spawn('node', ['child.js']);
// 向子进程发送数据
child.stdin.write('hello');
```
注意:在子进程中接收到数据后,需要根据具体的业务逻辑进行处理。如果需要将处理结果返回给父进程,可以通过process.stdout.write()方法将数据写入到标准输出流中,然后在父进程中监听子进程的stdout事件来接收处理结果。