2009-10-05 9 views
5

Y at-il un moyen d'obtenir le répertoire de travail actuel d'un processus en utilisant son PID par programmation sous OS X? Le cacao, le carbone ou l'AppleScript sont tous acceptables.Obtenir le répertoire de travail actuel du processus avec un pid par programme sous OS X

Il n'est pas acceptable d'envoyer "pwd" à la fenêtre/l'onglet de terminal en cours (ne pas affecter l'espace de travail).

La commande linux « pwdx » est également tout aussi inacceptable (juste au cas où vous lisez sur la partie « Cocoa »)

Répondre

1

Le AppleScript suivant est une solution partielle pour votre problème. Étant donné le pid UNIX dans la variable thePID, il reçoit d'abord le nom du processus. Il envoie ensuite la commande do shell script au processus d'application, ce qui entraîne la génération d'un processus shell enfant. Le processus enfant hérite du répertoire courant, qui peut ensuite être déterminé en exécutant la commande 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 

Le script ne fonctionne pas pour les processus qui ne lient pas le cadre AppleEvent (par exemple, purs processus POSIX).

8

sur 10.5 et versions ultérieures:

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

(avec préfixe sudo si le processus appartient à root.)

Questions connexes