nodejs 子进程正确的打开方式


Posted in NodeJs onJuly 03, 2017

因为库太拙了,需要在 nodejs 里调用子进程来获取数据。然而看到 child_process 的文档真是头疼,这么多种启动子进程的方法直接推到人面前,也没个解释,命名也十分无用。只能一个个地查看详细说明来找到应该使用的那个……所以我整理了一下。

首先是同步创建子进程的那几个函数。会阻塞 nodejs 的主循环。无用。(要是写小脚本的话我直接上 shell 或者 Python 了,干嘛跟自己过不去呢。)

exec :调用 shell 来执行命令的。这部分跟「exec」这个词的 UNIX/C 语义刚好相反。

execFile :不调用 shell,直接执行命令。这命名不明所以。

fork :执行一个 新的 nodejs 进程,并且建立一个专用的 IPC 通道。子进程除了 IPC 通道外与父进程无任何瓜葛!命名真是一如既往地误人子弟。默认使用与父进程相同的可执行文件(nodejs 版本),也可以另外指定。

spawn :相当于 Python 的 subprocess,可以指定是否使用 shell。默认不使用 shell。也支持 cwd 啊 env 啊 argv0 啊之类的参数。

结论:如果需要用 Python 的 subprocess.run / Popen 类似的功能,就使用 child_process.spawn 。 exec 开头的那个函数似乎没啥大用,大概跟 subprocess 的 getoutput / check_call 之类的一样只是有一些预设而已吧。

NodeJs 相关文章推荐
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
浅谈NodeJS中require路径问题
May 07 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
nodejs集成sqlite使用示例
Jun 05 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
nodejs结合Socket.IO实现的即时通讯功能详解
Jan 12 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 #NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 #NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 #NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 #NodeJs
NodeJS自定义模块写法(详解)
Jun 27 #NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 #NodeJs
NodeJs中express框架的send()方法简介
Jun 20 #NodeJs
You might like
利用php来自动调用不同服务器上的flash
2006/10/09 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
PHP调用其他文件中的类
2018/04/02 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
JavaScript 学习历程和心得分享
2010/12/12 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python实现KNN邻近算法
2021/01/28 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
用python解压分析jar包实例
2020/01/16 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
工作表现自我评价
2014/02/08 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
表扬稿格式范文
2015/01/16 职场文书
上诉答辩状范文
2015/05/22 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
Python实现批量自动整理文件
2022/03/16 Python
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技