The point is that the clients stay permanently connected, and reconnect if the connection is dropped. The server is POS server and the clients are Tills working with the POS server. There is a third program that downloads a new version for the server from time to time, which requires the server to end its work and to restart. That's why what I was thinking about is a shell script / batch file that loops forever and starts the server in each loop and waits until it dies, then again starts it. In such case I just need to exit the master process and the batch script will restart it. May be there is better way, but because it is forked process I can't just use exec $0. Perhaps you can offer a better way of doing it. If it is not a forking script I am just using 'exec $0' and it restarts just perfect.