免费注册 查看新帖 |

Chinaunix

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

遇到一个CGI问题,高手帮忙啊~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-02 22:29 |只看该作者 |倒序浏览
我用perl写系统管理的页面,遇到一个问题。
在cgi页面里我用system函数调用系统命令,命令执行的比较慢,页面却直接执行到了结尾,根本没有等待system函数调用的命令执行完毕,可是我还想看到命令执行好后的输出,我该怎么解决这个问题呀?~

等待高人指点啊~

论坛徽章:
0
2 [报告]
发表于 2010-09-02 22:52 |只看该作者
试试用``呢

$date_command = "/bin/date";
$date = `$date_command +"%A, %B %d, %Y at %T (%Z)"`; chop($date);

平时获取系统时候,用sendmail发送邮件,用``调用都挺正常的

论坛徽章:
0
3 [报告]
发表于 2010-09-02 23:02 |只看该作者
回复 2# iamlimeng


    今天整这个问题整了一天,不停的试各种方法。``和qx//和system都试了,我本来想print命令执行完的输出结果到页面上,我用一个数组来接住输出,然后print,没成功。

因为执行的命令需要连接网络,所以会稍等一会才执行完毕。目前我把输出的信息输入到log文件里是可以的,就是无法直接显示在当前网页上。

我找了网上的一些资料,有人说用open FILE,"ls |";这样的管道,我明天再试试看,不知道有没有别的方法了呢~

谢谢iamlimeng朋友回答哈~

论坛徽章:
1
申猴
日期:2014-04-18 16:29:14
4 [报告]
发表于 2010-09-03 09:35 |只看该作者
print STDERR?可以打印不?

论坛徽章:
0
5 [报告]
发表于 2010-09-03 11:09 |只看该作者
回复 3# ddgfff


print "Content-type: text/html\n\n";

你应该在print错误信息前打印以上标头,否则在IE显示里是看不到的。你说能输出到LOG,那就肯定能输出到IE。

论坛徽章:
0
6 [报告]
发表于 2010-09-03 11:59 |只看该作者
回复 5# iamlimeng


    我发现cgi页面执行的时候不等system执行完毕就执行到</html>标签这里了,然后如果命令不输出到log,那么在页面上显示则一片混乱。
我无法用数组接收到,然后格式化打印到当前页面,这个很无奈哦~

论坛徽章:
0
7 [报告]
发表于 2010-09-03 12:32 |只看该作者
贴代码上来

论坛徽章:
0
8 [报告]
发表于 2010-09-03 12:43 |只看该作者
  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. print "Content-type: text/html\n\n";

  5. my $info = system('xcopy c:\usr\site c:\test\ /s');
  6. print $info;
  7. print "\nOK!";

  8. exit;
复制代码
我用这个测试,是正常的,这个XCOPY命令,运行完需要约1分钟,CGI能正确显示状态。print "\nOK!"; 这一行也是最后才打印,说明代码是在等待system执行完。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP