Откройте Safari с URL из командной строки и получите обработчик процесса

Я знаю, что в MacOS есть несколько способов открыть Safari с заданным URL из командной строки, например

open -a Safari http://stackoverflow.com

Или как AppleScript

tell application "Safari" to open location "http://stackoverflow.com/"

Но если я начинаю процесс, например. программным способом я получаю дескриптор процесса open/applescript (который выходит сразу после запуска Safari).

Как я могу запустить Safari с заданным URL-адресом и получить дескриптор процесса Safari (он по-прежнему вне меня, почему он не может просто передать URL-адрес в качестве аргумента командной строки для исполняемого файла Safari)?

Ответ 1

в AppleScript, после открытия Safari с URL

tell application "Safari" to open location "http://stackoverflow.com/"

вы можете получить объект процесса

tell application "System Events" to set proc to application process "Safari"

объект proc будет иметь прикрепленный к нему идентификатор pid, bundle id и т.д.

Также обратите внимание, что Safari 5+ работает в многопроцессорной архитектуре: мастер-процесс и несколько процессов рендеринга, приведенный выше код получит вы только мастер-процесс; процессы рендеринга нелегко доступны, и нет никакого смысла контролировать какой-либо отдельный процесс рендеринга.