2016-06-25 14 views
5

मैं (system "some command") के साथ रैकेट के साथ बैश कमांड जारी कर सकता हूं, लेकिन कमांड लाइन से परिणामस्वरूप आउटपुट के बजाय फ़ंक्शन #t लौटाता है, जो केवल प्रिंट करता है। मैं समारोह के साथ वापस आने के आदेश का परिणाम कैसे प्राप्त कर सकता हूं?रैकेट में कमांड लाइन परिणाम कैसे वापस करें?

उत्तर

7

system प्रक्रिया stdout पैरामीटर current-output-port के मूल्य पर सेट करता है। इसका मतलब है कि हम current-output-port पर लिखे गए सब कुछ को एक स्ट्रिंग में एकत्र कर सकते हैं और उसे वापस कर सकते हैं। निर्माण with-output-to-stringcurrent-output-port को उस पोर्ट पर सेट करता है जो कुछ भी प्रिंट नहीं करता है, लेकिन आखिरकार पोर्ट को स्ट्रिंग के रूप में जो कुछ भी लिखा जाता है उसे देता है।

> (with-output-to-string (lambda() (system "date"))) 
"Sat Jun 25 12:20:12 CEST 2016\n" 
संबंधित मुद्दे