2015-11-10 29 views
-1

我正在使用NDK爲Android編寫實用程序。Android NDK:無限循環未被無限調用

在我的效用,我創建一個進程,並在這個過程中,我運行下面的代碼:

//Screenshot thread 
int i = 0; 
for (;;) { 
    char filename[255]; 
    snprintf(filename, sizeof(filename), 
    "/data/local/screenshots/screen%d.png", i); 
    execlp("screencap", "screencap", "-p", filename, NULL); 
    i++; 
    sleep(500); 
} 

我發現截圖創建第一時間,但隨後的截圖AREN」採取。當我停止該程序時,我發現我有一個screen0.png文件,但沒有screen1.png或任何後續文件。我已經確定閱讀了文檔,看起來Android函數需要毫秒參數。

任何想法?

回答

0

execve(2)手冊頁

返回值

             的exec()功能,如果發生錯誤只能返回。返回值是-1,並且設置errno來指示錯誤。

因此,該環路在exec()呼叫處被阻塞並且保持在那裏,除非發生錯誤。

+0

什麼是不回來的? – njzk2

+0

這對這個問題有影響嗎?這正是POSIX指定的方式。當然,這有很好的理由。 –

+3

@ njzk2 exec在同一個進程中用另一個覆蓋當前程序。它不創建新的過程。 – immibis