2012-11-06 12 views
5

के साथ मूल प्रक्रिया को समाप्त करें मैं वर्तमान में एक हास्केल प्रोग्राम लिख रहा हूं जो कुछ प्रारंभिक कार्य करता है और फिर ncmpcpp को कॉल करता है। जो मैं करने की कोशिश कर रहा हूं वह ncmpcpp शुरू कर रहा है और हास्केल प्रोग्राम को समाप्त कर देता है, ताकि केवल ncmpcpp छोड़ा जा सके (वैकल्पिक रूप से, प्रोग्राम पृष्ठभूमि में चल रहा है, जब तक यह अनजान है)फोर्क टू शेल स्क्रिप्ट और हास्केल

हालांकि, हालांकि मैं सक्षम हूं ncmpcpp शुरू करने के लिए, मैं इसके साथ बातचीत नहीं कर सकता। मैं इसका आउटपुट देखता हूं, लेकिन इनपुट असंभव प्रतीत होता है।

क्या मैं वर्तमान में कर रहा हूँ है:

import System.Process (createProcess, proc) 
... 
spawnCurses :: [String] -> IO() 
spawnCurses params = do 
    _ <- createProcess (proc "ncmpcpp" params) 
    return() 

मैं गलत क्या कर रहा हूँ/क्या मैं अलग तरह से करना चाहिए?

उत्तर

5

क्या आप exec कार्यों के परिवार की तरह ध्वनि प्राप्त करने की कोशिश कर रहे हैं। executeFile फ़ंक्शन पर एक नज़र डालें।

यदि आप चाहते हैं कि आपके मुख्य हास्केल प्रक्रिया के लिए बच्चे प्रक्रिया शुरू कर दी है के बाद fork-exec के बारे में पढ़ सकते हैं और forkProcess समारोह अभी भी चल रहा हो।

forkProcess का उपयोग करने का एक संपूर्ण उदाहरण executeFile के साथ http://therning.org/magnus/archives/727 पर पाया जा सकता है।

+0

वही था जो मुझे चाहिए था। आपका बहुत बहुत धन्यवाद! – Sacchan

संबंधित मुद्दे