2009-10-05 16 views
5

¿Hay alguna manera de obtener el directorio de trabajo actual de un proceso utilizando su PID programáticamente en OS X?Obtenga el directorio de trabajo actual del proceso con un pid programáticamente en OS X

Cocoa, Carbono o AppleScript son todos aceptables.

No es aceptable enviar "pwd" a la ventana/pestaña de la terminal actual (No desea afectar el área de trabajo).

El comando linux "pwdx" también es también inaceptable (por si acaso usted lee sobre la parte "Cacao")

Respuesta

1

La siguiente AppleScript es una solución parcial para el problema. Dado el pid UNIX en la variable thePID, primero recibe el nombre del proceso. A continuación, envía el comando do shell script al proceso de solicitud que dará como resultado un proceso de shell secundario que se genera. El proceso secundario hereda el directorio actual, que luego se puede determinar ejecutando el 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 

El guión no funciona para procesos que no enlazan con el marco AppleEvent (por ejemplo, procesos POSIX puros).

8

En 10.5 y posteriores:

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

(Prefijo con sudo si el proceso es propiedad de root.)

Cuestiones relacionadas