免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2528 | 回复: 8

pipe数据读写问题, 写无穷,只需要读定行 [复制链接]

论坛徽章:
0
发表于 2010-09-09 10:14 |显示全部楼层
本帖最后由 iamkey9 于 2010-09-09 13:48 编辑

依靠自己了:

$mkfifo data.fifo ;./generator > data.fifo &; pid_gen=$!
$./app -l 1000 data.fifo; kill -9 pid_gen; rm -f data.fifo

======================================================

一个程序需要打开某个文本文件,按行读取内容,类似用字典破解

$./app -l 100 data.dat  读100行data
$./app  data.dat        读所有行

现在想让另外一个程序动态生成这个数据文件的内容,

              generator
                   |---- data.dat   
app-----------------------|


想实现的是类似,
$app -l 1000 <(./generator -l 1000)
或者
$./generator -l 1000 | app -l 1000

但是这里generator可以产生无穷的数据,譬如./generator -l 1000000000 很消耗内存
有没有办法通过pipe 让app按自己的需求读取需要的数据?
类似
$./generator > pipe           # 写入pipe,blocked here
$cat pipe | app -l 1000       # 读pipe

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
发表于 2010-09-09 12:17 |显示全部楼层
head  -1000 或者  tail -1000 不能满足你的要求吗?

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
发表于 2010-09-09 12:29 |显示全部楼层
产生的数据放在一个文件里tail -f不行么?

论坛徽章:
0
发表于 2010-09-09 13:30 |显示全部楼层
head  -1000 或者  tail -1000 不能满足你的要求吗?
rdcwayx 发表于 2010-09-09 12:17



不行  、generator 是用来产生 每次都不一样的 随机序列的。我想让程序app自己去读需要的行数,
万一 app -l 10000000000, 用tail 和head 就悲剧了,我想要让geneator产生序列时候送到pipe满,  阻塞在那里

generator -> line1
                     ...
                     line x     <-- block here


然后等待app 去读,管道buffer空后,generator 继续填充管道,这样就节省空间了。

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2010-09-09 14:46 |显示全部楼层
$mkfifo data.fifo ;./generator > data.fifo &; pid_gen=$!
$./app -l 1000 data.fifo; kill -9 pid_gen; rm -f data.fifo

$./generator | app -l 1000
一样吧?

论坛徽章:
0
发表于 2010-09-10 10:13 |显示全部楼层
回复 5# r2007


    应该不一样的,后者运行在同一个进程,前者甚至可以用在不同终端不同用户,而且我不知道后一个generator会不会因为app处理不过来而进入阻塞状态。

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2010-09-10 10:58 |显示全部楼层
在本例效果是一样的

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2010-09-10 11:00 |显示全部楼层
回复 7# r2007


    r2007,你和LZ是什么关系?

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2010-09-10 11:01 |显示全部楼层
童鞋关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP