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 相关文章推荐
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
nodejs中实现sleep功能实例
Mar 24 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
NodeJS的Promise的用法解析
May 05 NodeJs
nodejs 终端打印进度条实例代码
Apr 22 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
浅谈JS和Nodejs中的事件驱动
May 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多图上传小程序代码
2011/07/17 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
JObj预览一个JS的框架
2008/03/13 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
Python isinstance判断对象类型
2008/09/06 Python
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python输入二维数组方法
2018/04/13 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
2014年五一劳动节社区活动总结
2014/04/14 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
老公保证书怎么写
2015/02/26 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书