免费注册 查看新帖 |

Chinaunix

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

Perl 显示 Shell调用的打印信息,能不能实时显示 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-02 10:38 |只看该作者 |倒序浏览
我要做Daily Build工具

由于字符串较多,所以选择了Perl


Build过程中需要大量使用svn、gcc、make、zip和其他shell脚本

我当前使用类似下面的方式
  1. $cmd="cd XXX && ./configure -DYYY && make clean all";
  2. print `$cmd 2>&1`;if($?!='0'){print "[Error:$?]$cmd\n";exit $?;}
  3. $cmd="/path/tools.sh"
  4. print `$cmd 2>&1`;if($?!='0'){print "[Error:$?]$cmd\n";exit $?;}
复制代码
由于`$cmd`时间比较长,并且输出较多,当前不能立刻看到编译过程中的提示信息(如:警告信息)


请问有没有其他思路可以实现实时打印shell的的输出信息

论坛徽章:
0
2 [报告]
发表于 2010-09-02 11:34 |只看该作者
个人觉得有两种办法:
1. 让cmd在后台执行,把的cmd的输出到一个文件,然后再去tail它,这个好像不是太好。
2.第二个就是把让cmd的输出输出到当前的显示设备:
  1. topaz$who am i
  2. hpcyuhua pts/3        2010-09-02 11:28 (222.177.19.233)
复制代码
当前的显示设备是pts/3,我测试的语句是
  1. $cmd="echo 1 >/dev/pts/3; sleep 6; echo 2 >/dev/pts/3; sleep 6; echo 3 >/dev/pts/3";
  2. `$cmd`;
  3. topaz$perl cmd.pl
  4. 1
  5. 2
  6. 3
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-09-02 13:16 |只看该作者
只是要实时的看到执行的输出,为什么不用 system 呢,

论坛徽章:
0
4 [报告]
发表于 2010-09-02 13:45 |只看该作者
回复 3# socyno


    恩,开始还以为system和``的效果一样就没试。试了一下system可以实时得到输出结果。

论坛徽章:
0
5 [报告]
发表于 2010-09-02 13:49 |只看该作者
多谢两位

2楼第二个方法和3楼的方法都可以,谢谢

论坛徽章:
0
6 [报告]
发表于 2010-09-02 14:11 |只看该作者
open CMD, "cmd|";
print while <CMD>;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP