Nodejs与管道和信号

Nodejs与管道

Linux的其中一个设计哲学就是小而精,一个程序只做一件事情,然后通过管道将多个程序连接起来完成复杂的任务。
比如如下的命令:
ps -ef | grep node
cat aaa.txt | grep bbb | cut -d’ ‘ -f3 | sort | uniq |wc -l

我们来看看nodejs中如何支持管道:
yourscript.js

process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', function(data) {
  process.stdout.write(data);
});

然后运行如下测试:
echo ‘foo’ | ./yourscript

Nodejs与信号

作为完整健壮的程序,需要支持常见的中断退出信号,使得程序能够正确的响应用户和正确的清理退出。

process.stdin.resume();

process.on('SIGINT', function () {
  console.log('Got a SIGINT. can show detail status');
});

process.on('SIGTERM', function () {
  console.log('Got a SIGTERM. exit with cleanup');
  process.exit(0);
});

可以通过下面的命令来测试是否正确工作:
kill -s SIGINT [process_id]
kill -s SIGTERM [process_id]

Original: https://www.cnblogs.com/itech/p/13137751.html
Author: iTech
Title: Nodejs与管道和信号

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/552007/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • find prune

    如果想查找某目录下的某些文件,但是想要避开某个目录,使用find 的-prune 但是-prune用法很严格,网上有很多文章介绍了它的用法,但是经过本人的实际使用,有些并不好用。 …

    技术杂谈 2023年6月1日
    0115
  • container容器

    container为容器型元素,内部可包含其他任何类型的view元素 属性 说明 type(layout子属性) 布局类型:linearLayout——线性布局absoluteLa…

    技术杂谈 2023年6月1日
    085
  • Go的隐秘世界:Go程序的启动和runtime初始化 asm_amd64.s

    啥语言到了底层都是会编【汇编】再不行就Debug【仿真】。 Go的隐秘世界:Go程序的启动和runtime初始化 – 知乎https://zhuanlan.zhihu….

    技术杂谈 2023年6月1日
    084
  • 从递归到记忆化搜索到动态规划

    动态规划的状态转移方程一般不容易找出来,并且两个变量的动态规划也不容易直接写出,我以leetcode No.300 最长递增子序列为例,总结一下是如何一步步从最开始的递归做法到记忆…

    技术杂谈 2023年7月25日
    069
  • 车牌号正则表达式

    车牌号正则表达式为 测试代码如下 php $reg = "/[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]{1}[A-Z]{1}[A-Z0-9]{…

    技术杂谈 2023年5月31日
    0100
  • 新接口开发-工时计算

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/shoshana-kong/p/16498596.htm…

    技术杂谈 2023年6月1日
    089
  • 袭击Mercurial SCM(HG)

    这个叫水银的源代码管理工具尽管默默无闻,但还是得到了非常多团队的使用。 为了迎合某些团队的须要,我们也要用它来管理我们的代码。 今天的任务是先袭击学习。磨刀不误砍柴工。 对工具的掌…

    技术杂谈 2023年5月31日
    095
  • 最长公共子序列

    题目链接 P1439LIS(Longest Increasing Subsequence)(最长递增子序列)LCS(Longest Common Subsequence)(最长公共…

    技术杂谈 2023年7月11日
    078
  • Mstar 平台(648)唤醒之串口唤醒

    串口唤醒功能主要是从supernova 待机进入PM后,串口接收PC端口发送过来的特定字串,然后将主板唤醒的功能。与IR,KEYPAD,WOL,CEC,MHL 等等基本流程一致,触…

    技术杂谈 2023年5月31日
    0123
  • Dijkstra算法详解(完美图解、趣学算法)

    摘自:https://blog.csdn.net/qq_45776662/article/details/107177424 Dijkstra算法设计 * Dijkstra算法简介…

    技术杂谈 2023年5月31日
    0109
  • 有意义的学习,都要先回答三个问题

    我们都知道, 在现代经济中, 我们不能停止学习。但如何保持自我教育是一个复杂的问题。 获得一个正式学位,比如 MBA 或博士学位, 是否值得? 你是否应该采取更有针对性的方法, 参…

    技术杂谈 2023年5月31日
    093
  • 辅导你的软件团队获得成功

    很少有人能靠自己的力量推进和发展自己的事业。一路上,他们有经验丰富的同事、导师和领导的帮助和指导。现在,你已经在职场上步步高升,你发现自己处于一个可以回报的位置。你有一个由软件工程…

    技术杂谈 2023年6月1日
    099
  • JAVA8-Lambda-(sorted+Comparator)排序

    使用场景:排队的时候按照个子大小排队 使用API 排序和MySql中的升序降序规则一样。 在排序时需要注意的是降序需要用到reversed(); public static voi…

    技术杂谈 2023年7月24日
    065
  • CentOS7.6安装MySQL-5.7.31(RPM方式安装)

    准备工作: 注:5.7.31版本安装步骤及初始化和之前版本有较大区别 CentOS 7.6 系统: 带GUI的服务器 默认安装 MySQL 5.7.31 安装包: 1.RPM安装包…

    技术杂谈 2023年7月24日
    062
  • python绘图之turtle库的相关使用

    turtle库的介绍 turtle库的使用 turtle库中相关的函数 窗体 setup()函数 screensize()函数 坐标 goto()函数 position()函数 h…

    技术杂谈 2023年7月24日
    090
  • python grpc 微服务

    https://realpython.com/python-microservices-grpc/ https://www.manning.com/books/developing…

    技术杂谈 2023年7月11日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球