免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5076 | 回复: 21
打印 上一主题 下一主题

UNIX下如何读取标准输出上的字符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-27 22:37 |只看该作者 |倒序浏览
SCO openserver 5.0.5
字符终端上已经有输出了
我现在希望能够保存其中的一部分显示内容,如 第4行第2列---第5行第20列
请问应该如何操作

我想功能应该有点类似于curses下的copy_win,不过curses应该用缓冲解决的

谢谢

论坛徽章:
0
2 [报告]
发表于 2007-02-28 13:18 |只看该作者
以下节选自 APUE 进程间通信 FIFO部分,应该可以满足你的要求吧,你可以从fifo中读取屏幕输出然后进行处理

使用F I F O以及U N I X程序t e e ( 1 ),就可
以实现这样的过程而无需使用临时文件。
(t e e程序将其标准输入同时复制到其标准输
出以及其命令行中包含的命名文件中。)
mkfifo fifo1
prog3 < fifo1 &
prog1 < infile | tee fifo1 | prog2
创建F I F O,然后在后台起动prog3, 它从F I F O读数据。然后起动progl, 用t e e将其输出发送到
F I F O和p r o g 2。

论坛徽章:
0
3 [报告]
发表于 2007-02-28 13:23 |只看该作者
比如你处理输出信息的进程为 prog,按如下命令可以对屏幕输出的信息进行处理

创建fifo: mkfifo fifo1
在后台设置处理进程从fifo1中读取信息: prog < fifo1 &
假设进程a将信息输出到屏幕上,a | tee fifo1

然后将后台的prog进程放到前台执行就好了

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2007-02-28 13:31 |只看该作者
管道,命名管道和非命名管道都可满足你的要求。
可以用popen,这是一个封装,比较方便一点

论坛徽章:
0
5 [报告]
发表于 2007-02-28 14:58 |只看该作者
谢谢楼上各位
用管道也是一种方法

我现在加了一个屏幕缓冲,现在这在想办法分出行列来,因为输出的字符串可能会包括终端控制字符,还要处理显示属性,比如高亮、粗体,这样区分行列就有点麻烦了。
不过用上面两种方式一样需要解决这个

开始我是想看看能否有办法直接读取终端显示缓冲,这样我自己在重定向之前输出的和其他程序输出的都能读到,不过没找到方法

论坛徽章:
0
6 [报告]
发表于 2007-03-01 14:38 |只看该作者
最后还是加了一个输出缓冲解决了
谢谢各位

论坛徽章:
0
7 [报告]
发表于 2007-06-12 12:25 |只看该作者

如何拷贝屏幕内容

在sco unix505上如何拷贝控制台屏幕内容?
您的方法可以吗?能告诉我吗?
QQ:6020651

论坛徽章:
0
8 [报告]
发表于 2007-06-12 12:37 |只看该作者
能否有办法直接读取终端显示缓冲



没有办法,只能在它打印之前捕获它

论坛徽章:
0
9 [报告]
发表于 2007-06-12 12:45 |只看该作者
楼上的不是说用设置缓冲区的方法可以吗?
您的方法是什么?

论坛徽章:
0
10 [报告]
发表于 2007-06-12 12:50 |只看该作者
原帖由 hnsyz 于 2007-6-12 12:45 发表
楼上的不是说用设置缓冲区的方法可以吗?
您的方法是什么?


是一样的吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP