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读取memcache示例分享
Jan 02 NodeJs
nodejs教程之入门
Nov 21 NodeJs
nodejs批量修改文件编码格式
Jan 22 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
NodeJS爬虫实例之糗事百科
Dec 14 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 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下MYSQL limit的优化
2008/01/10 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
php curl选项列表(超详细)
2013/07/01 PHP
PHP队列用法实例
2014/11/05 PHP
jquery 双色表格实现代码
2009/12/08 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
python使用append合并两个数组的方法
2015/04/28 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
Python2包含中文报错的解决方法
2018/07/09 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
python如何实现数据的线性拟合
2019/07/19 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
容易被忽略的Python内置类型
2020/09/03 Python
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
微博营销计划书
2014/01/10 职场文书
2014年元旦活动方案
2014/02/15 职场文书
政工师工作总结2015
2015/05/26 职场文书
学校教师培训工作总结
2015/10/14 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python