如何设置cmd命令的超时?

Dan*_* Ho 4 perl cmd

我只是在cmd中有以下命令

perl csv2rrd3.pl
Run Code Online (Sandbox Code Playgroud)

但它总是运行很长时间.有没有办法为它设置超时?或者我应该在perl脚本中做到这一点?如何?

谢谢

amo*_*mon 8

在Perl内部,您可以设置闹钟在几秒钟后熄灭.然后,您可以使用信号处理程序来捕获事件.任何时候只能激活一个警报

{ # enter new scope
    # set signal handler
    local $SIG{ALRM} = sub {
       # do cleanup, like closing sockets or whatever
       print STDERR "exited with ALARM\n";
       exit;
    };
    alarm 30; # try half a minute
    ...; # do expensive stuff
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*ias 6

从Windows命令行,您可以先start在自己的窗口中使用perl脚本,使用timeout等待x秒的命令(此处为2)将其链接,然后再使用taskkill命令将其链接以终止进程.

start perl csv2rrd3.pl & timeout -t 2 & taskkill /IM perl.exe
Run Code Online (Sandbox Code Playgroud)

上面的行会杀死每个perl进程.要仅杀死刚开始的一个,您可以使用自定义窗口标题.

start "KILLME" perl csv2rrd3.pl & timeout -t 2 & taskkill /FI "WINDOWTITLE eq KILLME" /IM perl.exe
Run Code Online (Sandbox Code Playgroud)