首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现qx(命令)的超时?

如何实现qx(命令)的超时?
EN

Stack Overflow用户
提问于 2010-03-23 16:03:57
回答 1查看 1.3K关注 0票数 1

我如何在这段代码中实现超时:如果"hwinfo --usb"-command在一段时间后没有返回任何东西,(停止命令并)从子_usb_device返回或死亡。

代码语言:javascript
复制
#!/usr/bin/env perl
use warnings; 
use strict;


sub _usb_device {
    my @array;
    {
    local $/ = "";
    @array = qx( hwinfo --usb );
    }
    ...
    ...
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-23 17:36:50

超时通常是通过alarms完成的。

代码语言:javascript
复制
 sub _usb_device 
 {
    # Scope array
    my @array;

    # Try shell command
    eval
    {
        local $SIG{ALRM} = sub { die "timeout\n" };
        local $/ = "";
        alarm 10;
        @array = qx( hwinfo --usb );
        alarm 0;
    };

    # Catch and rethrow non timout errors
    die $@ if $@ && $@ ne "timeout\n";

    # Done
    return @array;
 }
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2498336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档