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中使用captchapng模块生成图片验证码
May 18 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
详解Nodejs之npm&package.json
Jun 15 NodeJs
详解使用vscode+es6写nodejs服务端调试配置
Sep 21 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 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上的memcache和memcached两个pecl库
2010/03/29 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
职业生涯规划设计步骤
2014/01/12 职场文书
安全演讲稿开场白
2014/08/25 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python