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实用示例 缩址还原
Dec 28 NodeJs
nodejs文件操作模块FS(File System)常用函数简明总结
Jun 05 NodeJs
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
nodejs接入阿里大鱼短信验证码的方法
Jul 10 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
NodeJs项目中关闭ESLint的方法
Aug 09 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 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数组应用之比较两个时间的相减排序
2008/08/18 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
js实现抽奖效果
2017/03/27 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Python输出9*9乘法表的方法
2015/05/25 Python
Python实现包含min函数的栈
2016/04/29 Python
python删除过期log文件操作实例解析
2018/01/31 Python
详解Python3定时器任务代码
2019/09/23 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
军训生自我鉴定范文
2013/12/27 职场文书
应届生如何写自荐信
2014/01/05 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
我爱我家教学反思
2014/05/01 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
优秀党员申报材料
2014/12/18 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL