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 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
nodejs高大上的部署方式(PM2)
Sep 11 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 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
一个捕获函数输出的函数
2007/02/14 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
php 计划任务 检测用户连接状态
2012/03/29 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python新手实现2048小游戏
2015/03/31 Python
import的本质解析
2017/10/30 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
表彰先进集体通报
2014/01/12 职场文书
电气自动化求职信
2014/06/24 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
音乐之声观后感
2015/06/04 职场文书
《穷人》教学反思
2016/02/19 职场文书
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电