2009-10-05 27 views
5

üzerinde programlanmış olarak bir pid ile alın. Bir işlemin geçerli çalışma dizinini PID'yi programlı olarak OS X'te kullanarak almanın bir yolu var mı?Geçerli çalışma dizinini OS X

Kakao, Karbon veya AppleScript'in tümü kabul edilebilir.

Geçerli terminal penceresine/sekmesine "pwd" göndermek kabul edilmez (Çalışma alanını etkilemek istemeyin).

linux komut "pwdx" da kabul edilemez

cevap

1

aşağıdaki AppleScript sorununuza için kısmi bir çözüm (her ihtimale karşı siz "Kakao" bölümünü üzerinde okuyun) aynı zamanda. thePID değişkenindeki UNIX pid değeri verildiğinde, ilk olarak işlemin adını alır. Daha sonra, do shell script komutunu, uygulama işlemine gönderir ve bu, bir çocuk kabuğu işleminin ortaya çıkmasına neden olur. Alt işlem, daha sonra pwd komutunu çalıştırarak belirlenebilen geçerli dizini devralır.

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 

komut AppleEvent çerçevesi (örneğin saf POSIX süreçleri) bağlantı vermeyin süreçleri için çalışmaz. Daha sonra 10.5 ve üzerinde

8

:

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

(sudo ile Önek işlem kök ait kullanılabilir.)