如何使用 Node 的child_process从我的 Electron 应用程序中取消 bash 命令/脚本?



我正在用Wraith运行一个电子应用程序。我正在使用node的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)
}

控制台.log确认脚本继续运行,即使已调用vrt.kill()脚本也是如此。

这种方法在我寻找答案的过程中多次弹出。有谁知道我做错了什么?

谢谢大家

非常感谢您的帮助

教育部

试试这个。

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();
});
}    

谢谢: https://stackoverflow.com/a/18694940/12167785

最新更新