Ich habe einen Dienst, sagen foo, in C++ geschrieben, der als root läuft. Es gibt den üblichen Scrip, /etc/init.d/foo start | stop | restart.Wie bekomme ich einen Prozess, um sich in Linux neu zu laden?
Zu bestimmten Zeiten muss foo sich neu laden. Normalerweise, nachdem ein Upgrade beendet wurde. Aber Dinge zu tun, wie:
system("/etc/init.d/foo restart")
funktioniert nicht, da, sobald Neustart tötet foo, wobei das System() -Aufruf wird offensichtlich auch getötet, und der Neustart Skript führt nie zum Abschluss.
Gibt es einen anderen Aufruf, den ich anstelle von system() verwenden kann, das asynchron als ein Geschwister zum aufrufenden Prozess ausgeführt wird, anstatt ein synchrones Kind zu erstellen?
Danke!
Danke. Der andere Trick, den ich recherchieren musste, war fcntl() aufzurufen, um FD_CLOEXEC auf dem Server Listening Port zu setzen. Andernfalls würde die exec'd-App den ursprünglichen Socket erben und mir Kummer bereiten. –