在OS X上以编程方式获取进程的当前工作目录
问题描述:
有没有办法在OS X上以编程方式使用PID的进程获取进程的当前工作目录?在OS X上以编程方式获取进程的当前工作目录
可可,Carbon或AppleScript都是可以接受的。
将“pwd”发送到当前终端窗口/选项卡(不想影响工作区)是不可接受的。
Linux命令“pwdx”也是也是不能接受(以防万一你阅读过“可可”的一部分)
答
下面的AppleScript是你的问题的部分解决方案。给定变量thePID
中的UNIX pid,它首先获取进程的名称。然后它将do shell script
命令发送到应用程序进程,这将导致产生子shell进程。子进程继承当前目录,可以通过运行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进程)。
答
在10.5和更高版本:
lsof -a -p $PID -d cwd -Fn
(前缀与sudo
如果该过程由根拥有。)