免费注册 查看新帖 |

Chinaunix

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

请教:一个奇怪的system返回问题 [复制链接]

论坛徽章:
0
发表于 2009-12-29 12:04 |显示全部楼层
先上代码:

my @scripts = ( 'a.pl', 'b.pl', 'c.pl', 'e.pl', 'd.pl', 'f.pl', 'g.pl', 'h.pl' );
my $scriptNum = @scripts;

log( "script begins." );

my $i=0;
for( $i=0; $i<$scriptNum; $i++ ) {

    log( $scripts[$i]." begins." );

    if( system( $scripts[$i] ) == 0 )  {
        log( "$scripts[$i] done. " );
    } else {
        log( $scripts[$i]." error: $?\n" );
    }

    sleep(3);
}

log( "script ends." );
exit;

问题是这样子的:
    log记录内容如下:
        script begins.
        a.pl begins.
        a.pl done.
        b.pl begins.

根据b.pl本身的记录,b.pl已经正常运行完毕。但是上面的代码log没打到,而且system根本没捕捉到任何正确或错误的返回。整个程序就这样子消失了

实在没头绪,应该排除被kill的可能,脚本是通过cron起的。

请教各位同学们啊~~~~

论坛徽章:
0
发表于 2009-12-29 12:31 |显示全部楼层

回复 #1 CharlieSzu 的帖子

b.pl没有成功退出?僵尸进程?

论坛徽章:
0
发表于 2009-12-29 13:44 |显示全部楼层

回复 #2 兰花仙子 的帖子

根据b.pl的log,应该是顺利完成了。但是system调用没捕捉到它的返回,z进程ps也会跑出来吧? ps看过什么东西都没留下呢。

论坛徽章:
0
发表于 2009-12-30 12:52 |显示全部楼层

回复 #1 CharlieSzu 的帖子

不建议用system
用``加返回信息判断比较好

或者lock.file之类的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP