tags:

views:

77

answers:

1

Is it possible to detect when a long running process started with shell-command crashes, so it can automatically be restarted? Without manually checking its buffer and restarting by hand.

+2  A: 

I wouldn't handle this from Emacs at all. Instead, I'd write a wrapper script around my original long-running process that restarts the process if it dies in a partiular way. For example, if your program dies by getting the SIGABRT signal, the wrapper script might look like this:

#!/bin/bash

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

I got the value 134 for the SIGABRT signal by doing this:

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

This is all assuming some kind of Unix-y system.

Sean