2010-08-12 36 views
0

我將展示一些代碼,第一:
關於exec()函數和時間

echo exec("compile\\save.exe Untitled.c tmpUntitled.c");

我有一個計劃,命名爲save.exe,我想知道它是否已經停止?
如果停止,確定...做某事

如果不是,可能是一個錯誤,或環...
現在我想建立同樣的方式來控制時間該程序使用,並把一個限制(超過時間限制,這樣的事情...)

任何人有消化?




編輯[1]:save.exe是一個程序C語言寫的,和使用兩個參數:源和命運。
popen只是不執行save.exe,我這樣說,因爲它不再命運(與exec它發生);

+0

Exec不會這樣做。使用'popen',這是異步的。 – zneak 2010-08-12 17:00:54

+0

另請參見stream_select以強制執行時間限制。 – Artefacto 2010-08-12 17:06:39

回答

1

exec()將在exec'd程序運行時掛起您的腳本。僅當外部程序終止時纔會返回控制。如果你想看看程序是掛起還是等待輸入等等,你可以使用popen(),它返回一個文件句柄,從中你可以讀取程序的輸出。在這一點上,你可以做一個輪詢循環,看看是否有過任何輸出:

$app = popen("your shell command here"); 

while($output = fgets($app)) { 
    // handle output 
    sleep(5); // sleep 5 seconds 
}  

如果你想送東西給應用程序的輸入,那麼你必須使用proc_open(),這使得之間的雙向通信你的腳本和外部程序。