Как получить путь процесса по pid и перезапустить его - c - PullRequest
0 голосов
/ 10 декабря 2018

Я реализую Watchdog (приложение запускает watchdog) и не могу понять, как перезапустить процесс, используя путь к процессу.Отредактировано: Как получить путь процесса по pid и перезапустить его.Любая помощь или идеи будут оценены.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Это похоже на проблему XY.Не запускайте приложение, которое затем запускает сторожевой таймер, который может затем перезапустить приложение.

Напишите сторожевой таймер (или просто используйте уже существующую форму systemd) для запуска, просмотра и перезапуска приложения.Путь и аргументы для приложения затем просто передаются в качестве аргументов в сторожевой таймер.

Таким образом, все на самом деле будет работать.

0 голосов
/ 10 декабря 2018

Вы можете запустить ваш exe-файл напрямую, используя системную библиотеку в C. Системная библиотека выполняет любую команду, которую вы можете выполнить в командной строке или в Bash.Поэтому используйте пакетные команды, чтобы убить, а затем перезапустить программу.Для повторного запуска вам нужно будет использовать полный путь.

Windows

#include <stdlib.h>

int main(){
  system("taskkill /IM executablename");
  int status = system("executablename");
}

Linux

 int main(){
      system("killall -v executablename");
      int status = system("fullexecutablenameandpath");
    }
...