node.js - 如何使用 Node 的 child_process 从 Electron 应用程序取消 bash 命令/脚本?

标签 node.js electron child-process spawn

我正在使用 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();
    });

}    

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

关于node.js - 如何使用 Node 的 child_process 从 Electron 应用程序取消 bash 命令/脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58315903/

相关文章:

javascript - 如何将平面多分支数据转换为分层 JSON?

javascript - azure ARM 消耗: get consumption with a CSP subscription

node.js - 可以在 winston 进行每小时日志轮换吗?

Electron:ipcMain.on 和 ipcMain.handle 可以使用相同的 channel 名称吗?

file - 在 Electron 中保存用户数据的正确方法

javascript - 子进程库中的 IPC 连接不是双工的

c - 如何从 task_struct 获取最 child 子的 PID

javascript - 表达 next() 头错误

neo4j - Neo4j与Electron的结合

node.js - NodeJS 的子进程 args 数组是否清理参数?