Android NDK:无限循环未被无限调用

Android NDK: Infinite Loop Not Being Called Infinitely

我正在使用 NDK 为 Android 编写实用程序。

在我的实用程序中,我 fork 了一个进程,在那个进程中,我 运行 以下代码:

//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);
}

我发现屏幕截图是在 第一次 时创建的,但没有拍摄后续屏幕截图。当我停止程序时,我发现我有一个 screen0.png 文件,但没有 screen1.png 或任何后续文件。我一定要阅读文档,看起来 Android sleep 函数采用毫秒参数。

有什么想法吗?

来自 execve(2) 手册页

RETURN VALUE

       The exec() functions return only if an error has occurred. The return value is -1, and errno is set to indicate the error.

因此循环在 exec() 调用处被阻塞并停留在那里,除非发生错误。