Se você não se importa com o C ++, e a máquina tem os recursos de sobra, você pode escrever um programa recursivo como o seguinte:
int main()
{
int Started;
int Passed;
RUNAGAIN:
system("time=$(date); echo $time > ~/timeStarted");
CHECKTIME:
system("passed0=$(date); echo $passed0 > ~/timePassed; passed 1=$(cut -c15,16 ~/timePassed); echo $passed1 > ~/timePassedCut; started0=$(cut -c15,16 ~/timeStarted; echo $started0 > ~/timeStartedCut");
ifstream STARTED("~/timeStartedCut");
STARTED>>Started;
STARTED.close();
ifstream PASSED("~/timePassedCut");
PASSED>>Passed;
PASSED.close();
int TimePassed
TimePassed = Started - Passed;
if(TimePassed>4)
{
system("killall *process name here*; ~/*process name here*//to start it again, omit if uneeded//");
goto RUNAGAIN;
}
else if(TimePassed<5)
{
goto CHECKTIME;
}
}
Ele puxará a data de quando o programa iniciar, cortará o minuto da hora, gravará em um arquivo, carregará o arquivo como uma variável, fará o mesmo após algum tempo, e se a diferença entre o contagem de minutos da hora de início e contagem de minutos da hora de verificação é 5 ou maior mata o processo. Inicie o processo em questão com um script de shell básico contendo o seguinte para garantir que tanto o processo quanto o cronômetro iniciem simultaneamente:
#!/bin/sh
~/*process name here* & ~/CheckTime