On Windows, it\'s common practice to create a named mutex and use the presence of that to determine that an instance of a given app is already running. This has its drawback
Mapping process management among disparate operating systems doesn't work. Or doesn't work well. By default and without particular effort, you get one copy and only one copy of the application.
Here's a previous similar question that goes a step further than this current question, and with some replies that discuss interlocking when there are multiple copies of an image, or multiple applications that need coordination.
How to detect whether an OS X application is already launched
For an introduction to the run-time context and particularly around Mac OS X daemons and agents (and for those cases when you do need to have multiple copies of an executable running, as a pool or such and akin to Apache), see:
http://developer.apple.com/technotes/tn2005/tn2083.html