Auto respawn on update demo

Demo on how an executable can respawn after an update

How to build

go build updatedemo.go

How to run

./updatedemo

Rebuild a new version

From a different console, rebuild it with a new version:

go build -ldflags "-X main.Version=0.2" updatedemo.go

The program should replace the running process with the newer version.
It will keep the same PID and a supervisor like systemd will not notice it.

Test supervisor

To run it un ther the demo supervisor:

sh ./supervisor.sh ./updatedemo

Try the above rebuild and notice that the supervisor never gets the SIGCHLD, nor does it respawn it.

From a spearate console, try killing the updatedemo:

kill $(pidof ./updatedemo)

The supervisor will respawn it.

GitHub

View Github