text: // Copyright (c) 2013 The Chromium Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <time.h>
  #include <unistd.h>
  
  int main(int argc, char ** argv) {
    int i = fork();
    struct stat ft;
    time_t ct;
  
    if (i < 0) {
      printf("fork error");
      return 1;
    }
    if (i > 0)
      return 0;
  
    /* child (daemon) continues */
    int j;
    for (j = 0; j < getdtablesize(); j++)
      close(j);
  
    setsid(); /* obtain a new process group */
  
    while (1) {
      sleep(120);
  
      stat("/sdcard/host_heartbeat", &ft);
      time(&ct);
      if (ct - ft.st_mtime  > 120) {
        /* File was not touched for some time. */
        system("su -c stop adbd");
        system("sleep 2");
        system("su -c start adbd");
      }
    }
  
    return 0;
  }
  