Получите текущий рабочий каталог процесса с pid программно на OS X

Иногда, при разделении на подклассы, Вы хотите ограничить условия, требуемые создать экземпляр класса.

Позволяют мне дать Вам пример. Если бы классы действительно наследовали своих конструкторов суперкласса, все классы имели бы конструктора без параметров от Object. Очевидно, это не корректно.

5
задан Corey Floyd 5 October 2009 в 16:59
поделиться

2 ответа

Следующий код AppleScript является частичным решением вашей проблемы. Учитывая pid UNIX в переменной thePID , он сначала получает имя процесса. Затем он отправляет команду do shell script процессу приложения, в результате чего создается дочерний процесс оболочки. Дочерний процесс наследует текущий каталог, который затем можно определить, запустив команду pwd .

tell application "System Events"
    set theName to name of first process whose unix id is thePID
end tell

tell application theName
    do shell script "/bin/pwd"
end tell

Сценарий не работает для процессов, которые не связаны со структурой AppleEvent (например, чистые процессы POSIX).

1
ответ дан 14 December 2019 в 01:12
поделиться

В версии 10.5 и новее:

lsof -a -p $ PID -d cwd -Fn

(префикс с sudo , если процесс принадлежит пользователю root.)

8
ответ дан 14 December 2019 в 01:12
поделиться