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

时间:2015-11-10 02:13:34

标签: 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", filename, NULL);
  i++;
  sleep(500);
}

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

来自execve(2)手册页

  

返回值

     

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

所以循环在exec()调用时被阻止并保持不变,除非发生错误。