CheckSystemTask.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /*
  2. * CheckTask.c
  3. *
  4. * Created on: 2021年9月2日
  5. * Author: 7564
  6. */
  7. #include "CheckSystemTask.h"
  8. bool Taskconutstring(char *src, char *taskname)
  9. {
  10. bool result = false;
  11. if (src == NULL || strlen(src) == 0)
  12. return result;
  13. if (strstr(src, taskname) != NULL &&
  14. strstr(src, "grep") == NULL &&
  15. strstr(src, "[") == NULL)
  16. {
  17. result = true;
  18. }
  19. return result;
  20. }
  21. int GetProcessCount(char *procName)
  22. {
  23. int result = 0;
  24. FILE *fp;
  25. char cmd[256];
  26. char buf[256];
  27. sprintf(cmd, "ps -ef |grep %s", procName);
  28. fp = popen(cmd, "r");
  29. if(fp != NULL)
  30. {
  31. while(fgets(buf, sizeof(buf), fp) != NULL)
  32. {
  33. if (Taskconutstring(buf, procName))
  34. result++;
  35. }
  36. }
  37. pclose(fp);
  38. return result;
  39. }
  40. unsigned char CheckSystemTask(unsigned char systemPage)
  41. {
  42. unsigned char result = 0;
  43. unsigned char count_main = GetProcessCount("main");
  44. //unsigned char count_main = GetProcessCount("Module_CSU");
  45. unsigned char count_evComm = GetProcessCount("Module_EvComm");
  46. unsigned char count_psuComm = GetProcessCount("Module_PsuComm");
  47. // printf("*************************** \n");
  48. // printf("count_main = %d \n", count_main);
  49. // printf("count_eventLog = %d \n", count_eventLog);
  50. // printf("count_primary = %d \n", count_primary);
  51. // printf("count_evComm = %d \n", count_evComm);
  52. // printf("count_lcmCtrl = %d \n", count_lcmCtrl);
  53. // printf("count_interComm = %d \n", count_interComm);
  54. // printf("count_psuComm = %d \n", count_psuComm);
  55. // printf("*************************** \n");
  56. if (systemPage == 0x09 || systemPage == 0x0A)
  57. {
  58. if (count_main < 5 || count_psuComm < 2)
  59. {
  60. system("killall Module_EventLogging");
  61. system("killall Module_PrimaryComm");
  62. system("killall Module_EvComm");
  63. system("killall Module_LcmControl");
  64. system("killall Module_InternalComm");
  65. system("killall Module_PsuComm");
  66. system("killall OcppBackend &");
  67. system("killall Module_4g &");
  68. system("killall Module_Wifi &");
  69. system("killall Module_DcMeter &");
  70. sleep(3);
  71. system("/usr/bin/run_evse_restart.sh");
  72. }
  73. else
  74. {
  75. if(system("pidof -s Module_EventLogging > /dev/null") != 0)
  76. system("/root/Module_EventLogging &");
  77. if(system("pidof -s Module_PrimaryComm > /dev/null") != 0)
  78. system("/root/Module_PrimaryComm &");
  79. if(system("pidof -s Module_LcmControl > /dev/null") != 0)
  80. system("/root/Module_LcmControl &");
  81. if(system("pidof -s Module_InternalComm > /dev/null") != 0)
  82. system("/root/Module_InternalComm &");
  83. if (count_evComm < 2)
  84. {
  85. system("killall Module_EvComm");
  86. sleep(3);
  87. system("/root/Module_EvComm &");
  88. }
  89. }
  90. sleep(2);
  91. }
  92. if (count_main < 5)
  93. result = 1;
  94. else if (count_evComm < 2)
  95. result = 2;
  96. else if (count_psuComm < 2)
  97. result = 3;
  98. else if (system("pidof -s Module_EventLogging > /dev/null") != 0)
  99. result = 4;
  100. else if (system("pidof -s Module_PrimaryComm > /dev/null") != 0)
  101. result = 5;
  102. else if (system("pidof -s Module_LcmControl > /dev/null") != 0)
  103. result = 6;
  104. else if (system("pidof -s Module_InternalComm > /dev/null") != 0)
  105. result = 7;
  106. return result;
  107. }