2009-10-05 8 views
5

C'è un modo per ottenere la directory di lavoro corrente di un processo usando il suo PID in modo programmatico su OS X?Ottieni l'attuale directory di lavoro del processo con un pid in modo programmatico su OS X

Cocoa, Carbon o AppleScript sono tutti accettabili.

Non è possibile inviare "pwd" alla finestra/scheda del terminale corrente (non si desidera modificare l'area di lavoro).

Il comando linux "pwdx" è anche inaccettabile (nel caso in cui si legge sulla parte "Cacao")

risposta

1

Il seguente AppleScript è una soluzione parziale per il vostro problema. Dato il pid UNIX nella variabile thePID, prima ottiene il nome del processo. Quindi invia il comando do shell script al processo dell'applicazione che determinerà la generazione di un processo di shell figlio. Il processo figlio eredita la directory corrente che può essere determinata eseguendo il comando 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 

Lo script non funziona per i processi che non puntano al quadro AppleEvent (ad esempio, i processi POSIX puri).

8

Sulla 10.5 e successive:

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

(prefisso con sudo se il processo è di proprietà di root.)