我正在使用 Wraith 运行一个 Electron 应用程序。我正在使用 Node 的 child_process
,除了取消 bash 脚本/命令之外,它工作得非常好。
我无法在网上找到适合我的解决方案。
我想运行一个命令,其操作本质上与 ctrl + c
类似,但来 self 的 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)
}
console.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();
});
}
关于node.js - 如何使用 Node 的 child_process 从 Electron 应用程序取消 bash 命令/脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58315903/