我正在与Wraith一起运行一个电子应用程序。我正在使用节点的child_process
,它的工作原理非常好,除了取消bash脚本/命令外。
我一直没有找到适合我的在线解决方案。
我想运行一个基本上与ctrl + c
类似的命令,但是要从我的Electron应用程序中运行。
我已经精简了代码,以使其更易于阅读:
我的index.js
文件
var electron = require("electron");
var ipc = electron.ipcRenderer;
var shell = require('electron').shell;
var remote = require('electron').remote
var fs = require('fs');
var path = require('path');
var spawn = require('child_process').spawn;
function runScript(index) {
var directory = __dirname + '/src/bash/';
// Works as expected
var vrt = spawn('/bin/sh',
[directory + task, arg1, arg2]);
vrt.stdout.on('data', function (data) {
console.log(data.toString())
});
//This doesn't work
setTimeout(function () {
console.log("should close")
vrt.kill();
}, 1000)
}
即使已调用vrt.kill()
,console.log也会确认脚本继续运行。
在搜索答案期间,此方法弹出了几次。有人知道我在做什么错吗?
谢谢,全部
非常感谢您的帮助
萌
答案 0 :(得分:0)
尝试一下。
var electron = require("electron");
var ipc = electron.ipcRenderer;
var shell = require('electron').shell;
var remote = require('electron').remote
var fs = require('fs');
var path = require('path');
var spawn = require('child_process').spawn;
function runScript(index) {
var directory = __dirname + '/src/bash/';
// Works as expected
var vrt = spawn('/bin/sh',
[directory + task, arg1, arg2]);
vrt.stdout.on('data', function (data) {
console.log(data.toString())
vrt.stdin.pause();
vrt.kill();
});
}