I know there are several ways in MacOS to open Safari with a given URL from the command line like
open -a Safari http://stackoverflow.com
Or as an AppleScript
tell application "Safari" to open location "http://stackoverflow.com/"
But if I am starting the process e.g. programmatically I will only get the handle to the open/applescript process (which exits right after Safari is started).
How can I start Safari with a given URL and get the handle to the Safari process (it is still beyond me why it can’t just pass the URL as a command line argument to the Safari executable)?
in AppleScript, after opening Safari with URL
you may obtain the process object by
the proc object will have pid, bundle id and etc attached to it.
Also please note that Safari 5+ runs in a multi-process architecture: a master process and several rendering process, the above code will get you the master process only; rendering processes are not easily accessible, nor does it make much sense to control any individual rendering process.