免费注册 查看新帖 |

Chinaunix

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

perl system调用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-03 15:32 |只看该作者 |倒序浏览
按照perldoc的描述,要获取一个命令调用的返回值有以下几种情况:
   
  1.     @args = ( "command","arg1","arg2" );
  2.     system(@args) == 0 dir "execute system command failed
复制代码


更加精确的捕捉:
  1.    
  2.    if ($? == -1) {
  3.            print "failed to execute: $!\n";
  4.    }
  5.    elsif ($? & 127) {
  6.        printf "child died with signal %d, %s coredump\n",
  7.            ($? & 127),  ($? & 128) ? 'with' : 'without';
  8.    }
  9.    else {
  10.        printf "child exited with value %d\n", $? >> 8;
  11.    }
复制代码


但是有时候为了图简便,我们有时候把所有命令里调用都放一条命令里,例如:
  1.    
  2.     system("tar cvf xxxx.tar;cd -") == 0 or die "can't tar file"
复制代码


这里就出现了一个bug,因为system总是返回最后一次调用的结果的,导致检测不成功,因此在调用
system执行多条命令如果需要捕捉返回结果,最好是分开执行.

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
2 [报告]
发表于 2011-11-04 08:54 |只看该作者
学习了

论坛徽章:
0
3 [报告]
发表于 2011-11-04 22:40 |只看该作者
fork/exec 是一种昂贵的算法,也许对于使用高配置的IDE来开发高端应用程序的人来说,这并没有什么值得关注的地方。但对于底层的优化,对整座大厦而言,是意义深远的。

Perl 是 Unix 文化的蒸馏器,许多人努力将 Linux 平台上的各种工具,在Perl内部实现。
但至今为止,还没有一个模块能,完整的实现大部分的 shell 工具功能,也许作为一个开源平台,没有人有义务来完成什么任务,达到什么目标。因为在 Perl 世界的贡献,基本上是靠自愿和无偿付出。

这也是中国Perl文化如此冷淡的原因之一。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP