6

OS XでプログラムでPIDを使用して、プロセスの現在の作業ディレクトリを取得する方法はありますか?

Cocoa、Carbon、またはAppleScriptはすべて許容されます。

「pwd」を現在のターミナルウィンドウ/タブに送信することはできません(ワークスペースに影響を与えたくない)。

Linuxコマンド「pwdx」も受け入れられません(「Cocoa」の部分を読んだ場合に備えて)

4

2 に答える 2

9

10.5 以降の場合:

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

sudo(プロセスが root によって所有されている場合は、プレフィックスを付けます。)

于 2009-11-13T03:51:56.203 に答える
1

次のAppleScriptは、問題の部分的な解決策です。変数にUNIXpidを指定する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プロセスなど)では機能しません。

于 2009-10-06T20:36:52.257 に答える