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 相关文章推荐
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
使用forever管理nodejs应用教程
Jun 03 NodeJs
nodejs之请求路由概述
Jul 05 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 NodeJs
nodejs+express最简易的连接数据库的方法
Dec 23 NodeJs
详解NodeJS模块化
Jun 15 NodeJs
浅谈Node的内存泄露问题
May 06 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调用Java对象的方法
2006/10/09 PHP
php htmlspecialchars加强版
2010/02/16 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
Python编程把二叉树打印成多行代码
2018/01/04 Python
对python中的pop函数和append函数详解
2018/05/04 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
python读取各种文件数据方法解析
2018/12/29 Python
python微信撤回监测代码
2019/04/29 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
司机岗位职责
2013/11/15 职场文书
策划主管的工作职责
2013/11/24 职场文书
球队口号
2014/06/18 职场文书
自我管理的活动方案
2014/08/25 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
信访工作个人总结
2015/03/03 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL