1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include <sys/types.h> 6 #include <sys/stat.h> 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <time.h> 10 #include <unistd.h> 11 12 int main(int argc, char ** argv) { 13 int i = fork(); 14 struct stat ft; 15 time_t ct; 16 17 if (i < 0) { 18 printf("fork error"); 19 return 1; 20 } 21 if (i > 0) 22 return 0; 23 24 /* child (daemon) continues */ 25 int j; 26 for (j = 0; j < sysconf(_SC_OPEN_MAX); j++) 27 close(j); 28 29 setsid(); /* obtain a new process group */ 30 31 while (1) { 32 sleep(120); 33 34 stat("/sdcard/host_heartbeat", &ft); 35 time(&ct); 36 if (ct - ft.st_mtime > 120) { 37 /* File was not touched for some time. */ 38 system("su -c reboot"); 39 } 40 } 41 42 return 0; 43 } 44