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 sublime text 3安装与配置
Jun 19 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
nodejs使用async模块同步执行的方法
Mar 02 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
Jun 10 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
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
php 静态化实现代码
2009/03/20 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
小程序实现tab标签页
2020/11/16 Javascript
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
安全检查管理制度
2014/02/02 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
导师鉴定意见
2015/06/05 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书