İki olasılık vardır. Ya bir boru hattı olarak (open |...
ile oluşturulmuş) çalıştırın ve iletileri depolayarak ve yazdırırken olduğu gibi işleyin ya da Unix tee
yardımcı programını kullanın. İkinci alternatif kesinlikle daha basit!
# I like to spell out “update” in full
set cvsUpdStr [exec cvs -qn update | tee /dev/tty]
tee
programı normal standart çıkışı ve ayrıca olan dosyaya standart girdi gönderir; Geçerli terminale göndermek için /dev/tty
kullanıyoruz.
Ancak, çıktısını arabelleğe aldığından dolayı cvs
çıktısında uzun gecikmeler olabileceğini unutmayın. Bu, C terminalinin I/O işlemlerinin terminal dışı bir çıkışa gönderilmesinde varsayılan davranışıdır ve çıktıya anında ihtiyacınız varsa bir sorun olabilir. Bu oldukça ilgili alır Tespit çıkış patlamalı olmaktan memnunsanız, sadece yalnız bırakın böylece Windows'ta
, bunu başka bir şekilde yapmak gerekir ... (siz Expect kullanarak sonunda).
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 ...]
ile yapı Tcl açısından oldukça sıradışı, ama bu durumda kullanılacak doğru biridir. (open
için “dosya adı” ilk karakteri |
ise, tartışmanın dinlenme bir boru hattı inşa etmek için kullanmak bağımsız değişkenler listesindeki olarak ele alınır.)
CVS şeylerde özellikle ilgileniyorsanız, tkcvs'e bir göz atabilirsiniz, çünkü Tcl ile çoğu CVS komutunu tamamlıyor. http://tksvn.tigris.org/source/browse/tksvn/trunk/tkcvs/ – schlenk