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 npm package.json中文文档
Sep 04 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 NodeJs
详解nodejs内置模块
May 06 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
JS常见算法详解
2017/02/28 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
python正则表达式re模块详解
2014/06/25 Python
分析Python中解析构建数据知识
2018/01/20 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
如何安装ruby on rails
2014/02/09 面试题
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
世界名著读书笔记
2015/06/25 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android