2009-10-05 20 views
5

पर प्रोग्रामेटिक रूप से एक पिड के साथ प्रक्रिया की वर्तमान कार्यशील निर्देशिका प्राप्त करें क्या ओएस एक्स पर प्रोग्रामिंग के पीआईडी ​​का उपयोग कर प्रक्रिया की वर्तमान कार्यशील निर्देशिका प्राप्त करने का कोई तरीका है?ओएस एक्स

कोको, कार्बन, या ऐप्पलस्क्रिप्ट सभी स्वीकार्य हैं।

वर्तमान टर्मिनल विंडो/टैब (कार्यक्षेत्र को प्रभावित नहीं करना चाहते हैं) को "pwd" भेजने के लिए स्वीकार्य नहीं है।

linux कमांड "pwdx" भी भी अस्वीकार्य (सिर्फ मामले में आप "कोको" भाग पर पढ़ें)

उत्तर

1

निम्नलिखित AppleScript आपकी समस्या के लिए एक आंशिक समाधान है। परिवर्तनीय 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 प्रक्रियाओं) से लिंक नहीं हैं।

8

10.5 और बाद में:

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

(sudo साथ उपसर्ग यदि प्रक्रिया जड़ के पास है।)