In OSX use launchd to to this. launchd will start a command at login or boot and if the process dies it will restart it.
The process is controlled by a .plist file formatted as defined in Apple docs the example in that manual page is for the case you ask for.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
If you want to to start when a user logs in the this file goes in ~/Library/LaunchAgents. If when the machine boots then /Library/LaunchDaemons (which can't have access to the GUI) but this will run as root unless you add a UserName key. (Thanks to @Gordon Davisson for the correction and a reread of Apple definitions)
For ease of setting the .plist up you can use Lingon.app available from the Mac AppStore