В чем причина различного поведения сценария TCL при перенаправлении вывода в файл под Cygwin? - PullRequest
0 голосов
/ 05 января 2010

При вызове скрипта как

tclsh ./TestDriver.tcl TestList

скрипт tcl останавливается после одной (?) Строки. Но при вызове с перенаправлением вывода в файл

tclsh ./TestDriver.tcl TestList >bar.out

работает гладко. Есть идеи, что может быть причиной такого поведения?

Ответы [ 2 ]

1 голос
/ 02 октября 2010

Почти все сценарии Tcl работают одинаково, когда их вывод направляется на терминал или в файл. Хотя существует переменная tcl_interactive, которую можно отключить, она не вступает в игру, когда вы предоставляете сценарий в качестве аргумента. Другая разница в базовой линии в том, что stdout будет иметь различную буферизацию по умолчанию; Вы можете изменить это, чтобы быть определенным с:

fconfigure stdout -buffering none ;# Or “line” or “full”

Однако я ожидаю, что различия там сделают вещи (очень незначительные) менее вероятными в случае перенаправления в файл. Что бы ни происходило (и я держу пари, что это включает в себя запуск подпроцессов или использование пакетов расширений), я не могу догадаться на основании предоставленных доказательств.

0 голосов
/ 06 января 2010

Я думаю, что программа tcl вызывает функцию istty и меняет свое поведение в зависимости от того, думает ли она, что пишет в терминал. Возможно, он пытается отформатировать вывод, и широкий терминал вызывает его сбой.

...