Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

200
Views
¿Mejor manera de monitorear y matar el proceso estancado de otro programa en Linux?

Necesito que mi programa ejecute algún otro programa, pero si el otro programa no regresa dentro de un límite de tiempo, necesito eliminarlo. Se me ocurrió la siguiente solución que parece estar funcionando.

 int main() { int retval, timeout=10; pid_t proc1=fork(); if(proc1>0) { while(timeout) { waitpid(proc1, &retval, WNOHANG); if(WIFEXITED(retval)) break; //normal termination sleep(1); --timeout; if(timeout==0) { printf("attempt to kill process\n"); kill(proc1, SIGTERM); break; } } } else if(proc1==0) { execlp("./someprogram", "./someprogram", "-a", "-b", NULL); } //else if fork failed etc. return 0; }

Necesito que mi programa sea lo más robusto posible, pero soy nuevo en la programación en Linux, por lo que es posible que no esté al tanto de los posibles problemas que pueda tener. Mis preguntas son: 1. ¿Es esta una solución adecuada para este problema en particular o existen mejores métodos? 2. ¿Alguien ve posibles problemas o errores que puedan provocar un comportamiento inesperado o una fuga de recursos del sistema?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

(WIFEXITED(retval)) no devolverá verdadero si una señal elimina el programa (incluido, por ejemplo, un bloqueo debido a una infracción de segmentación).

Probablemente sea mejor verificar si el retorno de waitpid . Eso solo sucederá si el programa se cancela (ya sea voluntariamente o no).

Dependiendo de lo importante que sea asegurarse de que el proceso se haya ido...
Después de matar el proceso con SIGTERM , podría dormir otro segundo más o menos y, si aún no se ha ido, use SIGKILL para estar seguro.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!