The benefits of attaching to a running process is that you don't have to kill it and start a new process. I can think of two reasons for wanting to avoid that: you want zero downtime, and/or you want to preserve any state that is in the current process (say, network connections).
You want to do that when you think there's an actual benefit.
The way to do it is this:
where /sbin/init is the path to the executable, and 1 is the process id you wish to attach to.
Hint for debugging your own C code: pause() when you get a(n otherwise killing) signal.