执行 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 脚本作为子进程(不是来自其他脚本)的主要内容,如果未能解决你的问题,请参考以下文章