Android-NDK:无限循环没有被无限调用

Android-NDK:无限循环没有被无限调用,android,c,android-ndk,java-native-interface,Android,C,Android Ndk,Java Native Interface,我正在使用NDK为Android编写一个实用程序 在我的实用程序中,我分叉一个进程,并在该进程中运行以下代码: //Screenshot thread int i = 0; for (;;) { char filename[255]; snprintf(filename, sizeof(filename), "/data/local/screenshots/screen%d.png", i); execlp("screencap", "screencap", "-p", fi

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

在我的实用程序中,我分叉一个进程,并在该进程中运行以下代码:

//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函数需要毫秒参数

有什么想法吗

从手册页

返回值

exec()
函数仅在发生错误时返回。返回值为-1,设置errno以指示错误


因此,循环在
exec()
调用时被阻塞,除非发生错误,否则循环将保持在那里。

这与此问题有关吗?这只是POSIX指定的方式。当然,这是有充分理由的。@njzk2
exec
在同一过程中用另一个程序覆盖当前程序。它不会创建新进程。@njzk2,因为没有
exec()。反之亦然。