The manager approach is a viable solution, but I believe it has the additional hassles of:
writing a separate manager module
starting and stopping the separate manager module when the program runs/stops
detecting failures: as the manager is one more component in your system, what happens if it goes wrong? what happens if it segfaults? what happens if it does not work properly?