2012-03-16 60 views
-1

的時間間隔後停止程序在PHP文件,我有這樣的:如何在Ubuntu

system("../my/my.sh aa.pas", $retval); 
system("../my/aa"); 

其中aa是一個可執行文件。

如何編寫一個程序,如果經過n秒就會停止執行?

我想做一個判斷系統。 它將檢查以Pascal,C++等編寫的程序。如果程序的執行時間超過了指定的限制,我需要停止該程序。

回答

0

$!包含上次執行的命令的PID(進程ID)。因此,可以試試這個:

kill $! 
+0

但如何當運行時間超過1秒時,我可以做到嗎? – 2012-03-16 22:51:48

0
system('timeout n ../my/aa'); 
       ^

n是在幾秒鐘內某個整數值。

如果該命令超時,則退出狀態124.否則,退出狀態爲COMMAND的 。如果沒有指定信號,則在超時後發送TERM 信號。 TERM信號殺死任何不會阻止或捕獲該信號的進程。對於其他進程,可能需要使用KILL(9)信號,因爲該信號不能被捕獲。

+0

謝謝,但我怎麼知道我的程序是否完成或時間到了嗎? – 2012-03-16 23:10:54

+0

運行'timeout --help'可在計算機上看到發生超時時返回的值,然後檢查返回值(通過將可選參數添加到'system()')。我已經發布了我的機器的退出狀態,或許它們與你的一樣。 – nickb 2012-03-16 23:15:41

+0

非常感謝。它的工作 – 2012-03-16 23:24:11

0

你可以這樣做:

$PID = shell_exec("nohup ../my/aa > /dev/null & echo $!"); 

啓動子,在你等待主進程限制時間,然後

exec("kill -KILL $PID") 

檢查here,搜索殺