在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如果该过程由根拥有。)