执行 nodejs 脚本作为子进程(不是来自其他脚本)

Posted

技术标签:

【中文标题】执行 nodejs 脚本作为子进程(不是来自其他脚本)【英文标题】:Execute nodejs Script as child process (not from other script) 【发布时间】:2018-06-07 07:55:25 【问题描述】:

我正在尝试找到一种在后台运行我的 Nodejs 应用程序的方法。我做了很多研究并且知道它们(node-windows、forever、nssm、...)。

在此期间,我想到的是在 c++ 中创建我的 OWN 服务包装器,它将脚本(Windows)作为子进程执行。

因此我的问题是:这可能吗?与执行我的脚本的 node.exe 进行通信的可能性是什么?在 Google 中找到大量关于节点“子进程”模块的文章,但没有找到 node.exe 是子进程的地方。

顺便说一句:在 SO 上的一个答案中,我找到了一个使用 sc.exe 的解决方案,但是当我使用脚本安装 node.exe 时,它​​会被终止,因为它不响应 SCM 命令。这有用吗?

提前谢谢你

【问题讨论】:

这个问题是否仅适用于 C++ 包装器?不清楚你为什么要把它弄得那么复杂。 在 Google 中找到大量关于节点“子进程”模块的文章,但找不到 node.exe 是子进程的地方。 - 因为它不是特定于 node.exe,所以你只需像其他任何子进程一样杀死它过程,可能使用kill()。在 Node 中生成的进程是无缝的,***.com/questions/20187184/… 是的,我已经考虑过这个方向,但已经了解到 windows 不支持此类信号。这就是我要求交流可能性的原因。 (主要是为了以一种好的方式终止节点进程)。如果有人能立即得到答案,那就太好了,这样我就可以节省测试这些东西的时间。编辑:是的,仅限 c++ 包装器 如果您的问题是优雅地终止进程,我建议直接重新提问,因为这与 NodeJS 无关,仅与 C++ 部分有关,与执行无关,这是关于杀戮的。 在 SO 上的一个答案中,我找到了 sc.exe 的解决方案,但是当我使用脚本安装 node.exe 时,它​​会被终止,因为它不响应 SCM 命令。这有用吗? - 目前还不清楚它的全部内容。如果你有代码相关的问题,问题应该包含***.com/help/mcve。 不,问题不在于终止进程...我很确定 windows c++ 函数可以做到这一点,但它在很大程度上取决于 node.exe 的实现。 (如果我这样做,我的脚本最终会以正确的方式被注意到吗?例如脚本内部流程变量的退出事件)。我不能发布这样的问题,因为它会被关闭,因为它是一般性的。 我建议您提供 C++ 部分的示例实现,以免这个问题被认为过于笼统,因为它处于当前状态。 【参考方案1】:

您可以使用pm2 使进程在后台运行

pm2 启动 app.js --watch 这将启动该过程,还将查找文件中的更改。更多关于手表标志

【讨论】:

是的,我也看到了这个,但现在我对交流的可能性更感兴趣。特别是如何优雅地终止 Nodejs 子进程。 顺便说一句:你能告诉我PM2是如何在后台运行的吗?我没有看到已安装的 Windows 服务。这也适用于自定义脚本吗?

以上是关于执行 nodejs 脚本作为子进程(不是来自其他脚本)的主要内容,如果未能解决你的问题,请参考以下文章

Perl脚本调用的优缺点

Nodejs中调用系统命令Shell脚本的方法和实例

如何从nodejs刷新子进程

如何在nodejs里调用执行系统命令

nodejs 怎样检测子进程执行完成

如何在 nodejs 中侦听和生成多个子进程