I'm trying to run conky with gksudo (to get top amongst all process, not just mine) but I have really strange issue. Despite the fact that conky forks itself and exit immediately, gksudo won't exit at the same time. If I close it with Ctrl+C conky continue to run which proves that it had forked successfully. How can I make gksudo see that process it started has ended and give me my shell back?
When conky forks itself and exits, the parent process that gksudo created will continue to hang around as a zombie process.
As long as this process is present, gksudo will continue to run. From its man page:
If you're running this interactively, run it in the background as suggested, and for non-interactive use, give root permission to conky or the wrapper script via the /etc/sudoers file.
Edit: Using the gvim example in the other answer:
It seems to me that gksudo never does that. For example, gvim will give you a working shell back when you started it. But starting it with gksudo will block the shell.
The easiest thing you can do is run it in the background: