OS XでプログラムでPIDを使用して、プロセスの現在の作業ディレクトリを取得する方法はありますか?
Cocoa、Carbon、またはAppleScriptはすべて許容されます。
「pwd」を現在のターミナルウィンドウ/タブに送信することはできません(ワークスペースに影響を与えたくない)。
Linuxコマンド「pwdx」も受け入れられません(「Cocoa」の部分を読んだ場合に備えて)
OS XでプログラムでPIDを使用して、プロセスの現在の作業ディレクトリを取得する方法はありますか?
Cocoa、Carbon、またはAppleScriptはすべて許容されます。
「pwd」を現在のターミナルウィンドウ/タブに送信することはできません(ワークスペースに影響を与えたくない)。
Linuxコマンド「pwdx」も受け入れられません(「Cocoa」の部分を読んだ場合に備えて)
10.5 以降の場合:
lsof -a -p $PID -d cwd -Fn
sudo
(プロセスが root によって所有されている場合は、プレフィックスを付けます。)
次の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プロセスなど)では機能しません。