दो संभावनाएं हैं। या तो इसे एक पाइपलाइन के रूप में चलाएं (open |...
के साथ बनाया गया) और संदेश को संभालकर उन्हें प्रिंट करके इन्हें संभाल लें, या यूनिक्स tee
उपयोगिता का उपयोग करें। दूसरा विकल्प निश्चित रूप से सरल है!
# I like to spell out “update” in full
set cvsUpdStr [exec cvs -qn update | tee /dev/tty]
tee
कार्यक्रम अपनी सामान्य मानक आउटपुट प्लस नामक फ़ाइल करने के लिए अपने मानक इनपुट भेजता है; हम वर्तमान टर्मिनल पर भेजने के लिए /dev/tty
का उपयोग करते हैं।
ध्यान दें कि इसके आउटपुट को बफर करने के कारण cvs
के आउटपुट में आपको लंबी देरी हो सकती है। गैर-टर्मिनल पर आउटपुट भेजते समय यह सी लाइब्रेरी के I/O हैंडलिंग का डिफ़ॉल्ट व्यवहार है, और यदि आपको तुरंत आउटपुट की आवश्यकता हो तो समस्या हो सकती है। यह काफी शामिल हो जाता है फिक्सिंग इसलिए यदि आप उत्पादन बर्स्ती जा रहा है के साथ खुश हैं, बस इसे अकेला छोड़ दो ...
विंडोज पर, आप इसे दूसरी तरह करने की जरूरत है (आप की अपेक्षा का उपयोग कर अंत)।
set pipe [open |[list cvs -qn update] "r"]
while {[gets $pipe line] >= 0} {
append cvsUpdStr "$line\n" ;# Note the \n at the end!
puts $line
}
close $pipe ;# Any errors turn up here!
|[list ...]
साथ निर्माण नहीं बल्कि Tcl मामले में असामान्य है, लेकिन यह इस स्थिति में उपयोग करने के लिए सही से एक है। (यदि open
को "फ़ाइल नाम" का पहला वर्ण कोई |
है, बाकी तर्क के एक पाइप लाइन के निर्माण के लिए उपयोग करने के लिए तर्कों की सूची के रूप में व्यवहार किया जाता है।)
स्रोत
2012-09-27 10:42:03
आप विशेष रूप से सीवीएस बातों में रुचि रखते हैं, आप tkcvs पर एक नज़र डाल सकते हैं, क्योंकि यह पहले से ही अधिकांश सीवीएस कमांड को टीसीएल के साथ लपेटता है। http://tksvn.tigris.org/source/browse/tksvn/trunk/tkcvs/ – schlenk