हम इस प्रकार System.Process.proc
की मदद से एक ऐसी प्रक्रिया है foo
चला सकते हैं बिना मौजूद है:प्रोग्राम की जाँच करता है, तो निष्पादन इसे चलाने या `का उपयोग कर which`
createProcess $ proc "foo" []
लेकिन हम समय से आगे है कि क्या foo
पाया जा सकता है पता नहीं है। हम इसे चला सकते हैं और अपवाद पकड़ सकते हैं लेकिन यह खराब है। हम पहले which
पर भी कॉल कर सकते थे लेकिन यह भी बेकार है। process
पुस्तकालय में हम RawCommand
लगता है जो आज के रूप में कहते हैं
FilePath तर्क नाम निष्पादन, और निष्पादनयोग्य के लिए खोज के लिए मंच के मानक नीति के अनुसार व्याख्या की है। विशेष रूप से:
यूनिक्स प्रणालियों execvp (3) अर्थ विज्ञान प्रयोग किया जाता है, जहां अगर निष्पादन योग्य फ़ाइल नाम एक स्लैश (/) तो पथ वातावरण चर निष्पादन योग्य के लिए खोज की है शामिल नहीं है पर।
विंडोज सिस्टम पर Win32 CreateProcess semantics का उपयोग किया जाता है। संक्षेप में: यदि फ़ाइल नाम में कोई पथ नहीं है, तो मूल निष्पादन योग्य युक्त निर्देशिका को वर्तमान निर्देशिका के बाद खोजा जाता है, उसके बाद मानक स्थान, और अंत में वर्तमान पथ। एक .exe एक्सटेंशन जोड़ा गया है यदि फ़ाइल नाम में पहले से कोई एक्सटेंशन नहीं है। पूर्ण विवरण के लिए Windows SearchPath API के लिए दस्तावेज़ देखें।
यह ठीक है मैं क्या करना चाहते हैं लेकिन वहाँ है कि यह करता है कोई भी उजागर कार्यक्षमता हो प्रतीत नहीं होता है क्या। क्या मैं इसे अभी याद कर रहा हूं, क्या कोई और वैधानिक/बेहतर तरीका है या क्या मुझे process
आंतरिक के माध्यम से खोदना है? समाधान पोर्टेबल (विंडोज/लिनक्स) होना चाहिए।
अपने प्रश्न में बोली स्पष्ट रूप से के रूप में, वांछित अर्थ विज्ञान ओएस द्वारा लागू किया जाता है, तो आप इसे सीधे उपयोग करना चाहते हैं, तो आप FFI उपयोग करने के लिए (और की आवश्यकता होगी फिर से लिखें सभी क्रॉस प्लेटफॉर्म संगतता कोड स्वयं)। "हम इसे चला सकते हैं और अपवाद पकड़ सकते हैं लेकिन यह गरीब है" - इस दृष्टिकोण के साथ कुछ भी गलत नहीं है, और यह अब तक का सबसे सरल लगता है। (यदि आप अपने कार्यक्रम को मजबूत बनाना चाहते हैं तो आपको शायद बाहरी कार्यक्रमों से अपवादों को संभालना चाहिए)। – user2407038
यदि इरादा इसे चलाने के लिए है, तो मुझे लगता है कि इसे चलाने और अपवाद को पकड़ने का प्रयास * आदर्श * समाधान है - आपको उस मामले को संभालना होगा, भले ही अस्तित्व की जांच और निष्पादन के बीच राज्य का जोखिम बदल रहा हो । – ryachza
क्या आपने [shake: command] (https://hackage.haskell.org/package/shake-0.16/docs/Development-Shake-Command.html) पर एक नज़र डाली है? मैं इसे अधिकतर शैल स्क्रिप्ट्स के विकल्प के रूप में उपयोग करता हूं – epsilonhalbe