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(二)--- Node.js事件模块
May 21 NodeJs
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
详解nodeJS之二进制buffer对象
Jun 03 NodeJs
NodeJS使用七牛云存储上传文件的方法
Jul 24 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 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
php关联数组快速排序的方法
2015/04/17 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
python 数据加密代码
2008/12/24 Python
python爬取网站数据保存使用的方法
2013/11/20 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
python解释器spython使用及原理解析
2019/08/24 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
新学期决心书
2014/03/11 职场文书
经销商订货会主持词
2014/03/27 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
实习单位推荐信
2015/03/27 职场文书
新闻通讯稿模板
2015/07/22 职场文书
初中思品教学反思
2016/02/20 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
商业计划书之服装
2019/09/09 职场文书