2015-11-05 24 views

回答

4

在Linux上,您可以使用program time來獲取執行時間。只要把它加到你的Perl腳本就可以了。

$ cat foo.pl 
1 while 1; 
$ time perl foo.pl 
^C 
real 0m1.006s 
user 0m0.756s 
sys 0m0.008s 

當然這不限於Perl程序。它適用於任何程序。

+0

謝謝,它的工作原理。 –

1

Perl有一個名爲:$^T的內置變量,它是程序的開始時間。

注意 - 在Unix CTRL-Z停止過程(SIGSTP)(可續),其中CTRL-C導致其退出。 (SIGINT)

添加處理程序SIGINT會是這樣的。

$SIG{'INT'} = sub { warn "Start time: $^T\n, Run time:".(time() - $^T)."\n" }; 

注意 - 這實際上不會彈了出來你的程序的任何更多的 - 如果你這樣做,你應該die爲好,否則程序會做一個Ctrl-C意想不到的事情(如不退出 - 但沒關係,如果它放棄「當前操作」)

所以通常你會勾其他信號之一,像SIGUSR1SIGUSR2這是明確的用戶自定義功能。 (您可以然後kill -USR1 <pid>

#!/usr/bin/env perl 
use strict; 
use warnings; 

$SIG{'INT'} = sub { warn "Started at $^T, runtime ".(time() - $^T)."\n"; die }; 
$SIG{'USR1'} = sub { warn "Started at $^T, runtime ".(time() - $^T)."\n"; 
        warn "Program continuing\n"; }; 

while (1) { 
    sleep 1; 
} 
+0

Nit:Ctrl-Z(在unix上)發送'SIGTSTP',所以如果你願意,你可以將它陷阱。雖然這裏不是很有用。我想他可能在Windows上,Ctrl-Z導致EOF(類似於unix中的Ctrl-D)。 – ikegami

+0

編輯好點。鉤住'正常'信號是一件壞事。 – Sobrique

+0

「不工作」你得到的錯誤是什麼? (注意,扭捏它有點...) – Sobrique

相關問題