前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell中用到的管道有什么作用?(进程间传递数据)

shell中用到的管道有什么作用?(进程间传递数据)

作者头像
程序员小王
发布2018-04-12 17:03:44
7460
发布2018-04-12 17:03:44
举报
文章被收录于专栏:架构说
本周问题 来源 公司讨论qq群

执行命令 ps -ef | grep xxx | awk ‘{print $2}’ | xargs -i kill -9 {} 报错: fork: 无法分配内存

疑问

(1) shell命令和 fork 有什么关系,为什么会有fork关键提示?

(2) 这个命令有没有问题呀?(这个问题其他同事解决的)

回答:

1 进程间通讯方式之一 管道 “|” 就是无名管道 用于父子之间 传 递数据

演示:
这三个进程是fork出来的吗? 是 截图可能有点不符上面例子

总结:

管道 传输 不需要 tcp等网络协议 涉文件系统, 对管道的访问用了锁、等待队列和信号等机制同步 做了个测试只运行了不到0.1S的时间, 却读取了10MB的数据。这说明管道在程序之间传递数据是很有效率的

2 : xarg kill -9 和xarg -i kill -9 {} 有差异 -i 是一个一个处理参考

改为

ps -ef | grep xxx | awk ‘{print $2}’ | xargs kill -9

参考: 1 管道实现机制 http://www.cnblogs.com/biyeymyhjob/archive/2012/11/03/2751593.html

http://blog.chinaunix.net/uid-20447380-id-1945730.html

2 有名管道 (演示阻塞 了解同步) http://bbs.51cto.com/thread-1104907-1-1.html

下次阅读 线程池 UNIX网络编程 第2卷 进程间通信 第四章就有名管道

演示并发服务端实现 其中有下面一句话下次在看

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Offer多多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本周问题 来源 公司讨论qq群
  • 疑问
  • 回答:
  • 演示:
  • 这三个进程是fork出来的吗? 是 截图可能有点不符上面例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档