Автор Гілка: Коректний вихід із завислої програми  (Прочитано 9520 раз)

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Якщо потрібно вбити якийсь процес, але зробити це без kill, то можна підʼєднати gdb до процесу та викликати exit(0). Приклад для x86_64:
Код: Bash
  1. #!/bin/bash
  2.  
  3. gdb -p "$1" -batch -ex 'set {short}$rip = 0x050f' -ex 'set $rax=231' -ex 'set $rdi=0' -ex 'cont'
  4.  
https://gist.github.com/moyix/95ca9a7a26a639b2322c36c7411dc3be
[Fedora Linux]

Відсутній jetty

  • Новачок
  • *
  • дописів: 7
  • Карма: +0/-0
Що з IOWAIT ?

Відсутній ysenko

  • Новачок
  • *
  • дописів: 38
  • Карма: +1/-0
  • Python developer
Не впевнений, що це буде "коректний" вихід. Програма може реєструвати обробники на сигнали наприклад на SIGTERM, щоб коректно звільнити всі ресурси. Швидше за все, в такий спосіб, як навели ви, обробник не буде викликаний. Якщо програма зависла повністю і єдиний вихід SIGKILL, то, мабуть це таки альтернатива.
import antigravity