【问题标题】:Get the current working directory of process with a pid programmatically on OS X在 OS X 上以编程方式获取具有 pid 的进程的当前工作目录
【发布时间】:2009-10-05 16:53:15
【问题描述】:

有没有办法在 OS X 上以编程方式使用进程的 PID 获取进程的当前工作目录?

Cocoa、Carbon 或 AppleScript 都可以接受。

不可接受将“pwd”发送到当前终端窗口/选项卡(不想影响工作区)。

linux 命令“pwdx”也是不可接受的(以防您阅读了“Cocoa”部分)

【问题讨论】:

    标签: objective-c cocoa process applescript macos-carbon


    【解决方案1】:

    在 10.5 及更高版本上:

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

    (如果进程由 root 拥有,则前缀为 sudo。)

    【讨论】:

      【解决方案2】:

      以下 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 进程)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-14
        • 2019-04-07
        • 1970-01-01
        • 2010-12-04
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多