Перезапуск команды оболочки Emacs при сбое - PullRequest
1 голос
/ 11 апреля 2010

Можно ли определить, когда длительный процесс, запущенный из-за сбоя команды оболочки, можно автоматически перезапустить? Без ручной проверки его буфера и перезагрузки вручную.

1 Ответ

2 голосов
/ 12 апреля 2010

Я бы не справился с этим из Emacs. Вместо этого я бы написал скрипт-обертку вокруг моего первоначального длительного процесса, который перезапускает процесс, если он умирает частичным образом. Например, если ваша программа умирает, получая сигнал SIGABRT, сценарий оболочки может выглядеть следующим образом:

#!/bin/bash

while true
do
    your-original-command --switch some args
    if [ $? -ne 134 ]; then break; fi
    echo "Program crashed; restarting"
done

Я получил значение 134 для сигнала SIGABRT, выполнив это:

perl -e 'kill ABRT => $$'; echo $?

Все это предполагает какую-то систему Unix-y.

...