С++ ПРОВЕРКА - ЗАПУЩЕН ЛИ ПРОЦЕСС В LINUX?

Пока делал сервер обновления приложений, задался вопросом, как реализовать такую проверку на C++. Как обычно, перерыл весь интернет и не нашел ничего толкового, готового рецепта нет. Потом пришел к выводу, что зашел слишком уж издалека, а тут надо с другой стороны. Допустим, если у нас запущен какой-то процесс, тогда у него должен быть какой-то идентификационный номер, PID. Соответственно, мы можем попробовать найти PID по имени процесса. Если у нас это получится - значит, процесс запущен. Если нет, то нет. Ну и вот, наконец-то, поиски увенчались успехом и теперь у меня есть пример кода, достаточно простой для изучения и внедрения в будущие проекты.

nano fuckupMond.cpp

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>

int GetPIDbyName(char* pidName)
{
    FILE *fp;
    char pidofCmd[50]={0};
    int pidValue=-1;
        
    if(pidName != 0) {
        strcpy(pidofCmd, "pidof ");
        strcat(pidofCmd, pidName);
        strcat(pidofCmd,  "> /tmp/pidof");
        system(pidofCmd); 
        fp = fopen("/tmp/pidof", "r");
        fscanf(fp, "%d", &pidValue);
        fclose(fp);
    }
    return pidValue;
}

int main() 
{
for(;;){
      sleep(3);
      int madserverPid = GetPIDbyName("madserver") ; 
      if(madserverPid < 0) {
          printf("madserver is not running. \r\n");
          printf("madserver pid: %d\n", madserverPid);
          printf("Starting madserver...\r\n");
          system("nohup madserver &");
      } else if(madserverPid > 0){
      	  printf("madserver is already running. Nothing to do.\r\n");
      	  printf("madserver pid: %d\n", madserverPid);
      }
      
      }
      return 0;
}

g++ fuckupMond.cpp -o fuckupMond