Откройте 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+ работает в многопроцессорной архитектуре: мастер-процесс и несколько процессов рендеринга, приведенный выше код получит вы только мастер-процесс; процессы рендеринга нелегко доступны, и нет никакого смысла контролировать какой-либо отдельный процесс рендеринга.