野生技术,活用exec
exec的支持,让程序有了很大的空间,尤其我们用electon开发桌面应用。我们可以调用ffmpeg处理视频、音频;我们也可以调用bat批处理;我甚至直接用exec配合各种程序开发出了远程管理工具。
那还有哪些更夸张的用法呢?
1、比方说远程管理软件,需要安装为服务,需要守护进程。都可以借助一些开源工具exec实现。安装服务借助winsw.exe;守护服务借助nodejs。
winsw.exe的配置如下
<?xml version="1.0" encoding="UTF-8" ?> <service> <id>start_service.exe</id> <name>start_service</name> <description>start_service</description> <executable>C:\start_service\service\startservice_node.exe</executable> <logmode>roll</logmode> <depend></depend> <startargument>C:\start_service\service\start.js</startargument> <stopargument>C:\start_service\service\start.js</stopargument> </service>
startservice_node.exe其实就是node.exe重命名;客户端集成node.exe,重命名是为了防止有些人杀node进程(有同行们采取类似方法,他们的守护进程发现程序异常了,杀所有node进程后重启)。
守护进程的工作,通过exec变成了写nodejs代码,而且是安装成了服务。
2、再比如说,客户端集成nginx。同样的把nginx重命名成app_nginx.exe,exec打开nginx,享用nginx的一些功能,如反向代理。
3、exec 定时 核对加密狗。通过定时exec检验加密狗是否正常。
当然了exec稳定性会差一些, 一般情况下必须配合守护进程使用。exec一般是会开启n个子进程或新进程。子进程会随着主进程关闭而关闭,产生一定影响;新进程就是完全独立。守护进程要管理这些进程,很多进程容易出现意外死了,要有效的管理,否则稳定性会很差。先前也说了有同行直接按进程名杀进程,怕不被误杀得重命名。另外有的工具有必要的话可以做任务池,如ffmpeg。先前做过采集网络上的视频,当网络不好的时候容易造成进程卡住。这个时候可以通过任务池去管理,把死的进程杀掉继续未完成的任务。