我到处都看了,不知道应该去哪里。
我想从正在从Electron调用的bash脚本中运行一个ctrl + c
命令,但它似乎不起作用。
我精简了代码,使其更易于阅读:
我的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 bashScriptRun = spawn('/bin/sh', [directory/runScript.sh]);
bashScriptRun.stdout.on('data', function (data) {
console.log(data.toString())
});
}
function cancelScript() {
var cancelBashScript = spawn('/bin/sh', [directory/cancelScript.sh]);
cancelBashScript.stdout.on('data', function (data) {
console.log(data.toString())
});
}
cancelScript.sh
文件# Get its PID
PID=$!
# Wait for 2 seconds
sleep 2
# Kill it
kill $PID
即使已调用
cancelScript.sh
,console.log也会确认脚本继续运行。另外,当我尝试回显
PID($!)
变量时,它会记录一个空字符串。我究竟做错了什么?
我可以在哪里学习bash脚本/SIGINIT/etc的任何指南?
我仍然无法解决它或到目前为止找到的文档。
谢谢,全部
非常感谢您的帮助
萌
最佳答案
$!
将获取当前shell最近启动的后台进程的pid,但是当前shell尚未启动,因此为空白。
如果要获取从Node.js开始的进程的pid,则必须询问Node.js。在这种情况下,您可以使用bashScriptRun.pid
获得它
如果希望pid在cancelScript.sh
中可用,则可以重写index.js
以将其作为参数传递给脚本。
如果这太棘手,则可以使用killall runScript.sh
杀死具有该名称的任何内容。
关于node.js - 什么是Electron中ctrl + c的bash脚本等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57300075/