如何从NodeJs调用Java程序
我有一个通常从命令行启动的Java程序。从命令行启动后,Java程序将一直运行直到被按下Ctrl +
C退出或杀死另一个脚本中的命令为止。Java程序向控制台输出错误消息(如果有)。
现在,我想开发基于Express的NodeJs
Web应用程序。当用户单击链接(运行)时,单击处理程序将调用Ajax请求,这将导致后端NodeJs脚本运行该Java程序(如果尚未运行)。另一个链接(停止)将使Ajax请求停止该Java程序。
如何做到这一点?用示例代码回答将是最有用的。
还有一个要求:如果此NodeJs Web应用程序终止,则由它启动的Java程序将继续运行,即它不依赖于NodeJs Web应用程序。
回答:
您可以启动子进程,并在不需要时发送终止信号。
var spawn = require('child_process').spawn;var child = spawn('java', ['params1', 'param2']);
要终止应用程序或模拟CTRL
+ C
,请发送信号:
// control + c is an interrupt signalchild.kill('SIGINT');
// or send from the main process
process.kill(child.pid, 'SIGINT');
如果要以分离的方式运行应用程序,则可能应该将PID写入某处。要运行分离的应用程序,请按以下方式运行它:
var fs = require('fs');var out = fs.openSync('./out.log', 'a');
var err = fs.openSync('./out.log', 'a');
var child = spawn('java', [], {
detached: true,
stdio: [ 'ignore', out, err ]
});
child.unref();
这产生了一个子进程,其I / O流与父进程没有关联。
以上是 如何从NodeJs调用Java程序 的全部内容, 来源链接: utcz.com/qa/432565.html