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 相关文章推荐
用nodejs实现PHP的print_r函数代码
Mar 14 NodeJs
跟我学Nodejs(一)--- Node.js简介及安装开发环境
May 20 NodeJs
Nodejs进程管理模块forever详解
Jun 01 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
nodejs基于express实现文件上传的方法
Mar 19 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 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
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
javascript知识点收藏
2007/02/22 Javascript
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
jquery ajax执行后台方法
2010/03/18 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
python 内置函数filter
2017/06/01 Python
Python语言描述最大连续子序列和
2017/12/05 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
通过shell+python实现企业微信预警
2019/03/07 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
tensorflow自定义激活函数实例
2020/02/04 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
Python 如何展开嵌套的序列
2020/08/01 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
美国网上书店:Barnes & Noble
2018/08/15 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
送货司机岗位职责
2013/12/11 职场文书
青岛海底世界导游词
2015/02/11 职场文书
《鲸》教学反思
2016/02/23 职场文书
关于感恩的作文
2019/08/26 职场文书
vue 给数组添加新对象并赋值
2022/04/20 Vue.js