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开发微信公众号后台服务实例
Sep 03 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
Jul 30 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 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
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
php开发工具有哪五款
2015/11/09 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
详解Javascript 装载和执行
2014/11/17 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
JS中递归函数
2016/06/17 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
在Linux下调试Python代码的各种方法
2015/04/17 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
浅谈Django的缓存机制
2018/08/23 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
numpy.array 操作使用简单总结
2019/11/08 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
python实现登录与注册系统
2020/11/30 Python
python在协程中增加任务实例操作
2021/02/28 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
几道Java和数据库的面试题
2013/05/30 面试题
十八届三中全会个人学习材料
2014/02/13 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
关于教师节的广播稿
2014/09/10 职场文书
公司离职证明标准范本
2014/10/05 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技