Запуск общего сценария TCL в Windows и Linux - PullRequest
5 голосов
/ 16 июля 2010

Я новичок в TCL. Как я могу запустить общий сценарий tcl в Windows и Linux? Я хотел бы сначала проверить тип платформы, а затем вызвать соответствующую процедуру tcl.

Ответы [ 3 ]

7 голосов
/ 17 июля 2010

Да, это сработало, Джексон. По сути, я хотел знать, на какой ОС работает мой скрипт, например,

set OS [lindex $tcl_platform(os) 0]
if { $OS == "Windows" } {
    perform this ...
} else {
    perform that ...
}
7 голосов
/ 16 июля 2010

Вы можете начать с просмотра массива tcl_platform.На моем (windows) компьютере это сообщает следующее:

% parray tcl_platform
tcl_platform(byteOrder) = littleEndian
tcl_platform(machine)   = intel
tcl_platform(os)        = Windows NT
tcl_platform(osVersion) = 5.1
tcl_platform(platform)  = windows
tcl_platform(threaded)  = 1
tcl_platform(tip,268)   = 1
tcl_platform(tip,280)   = 1
tcl_platform(user)      = username
tcl_platform(wordSize)  = 4

В системе Unix значения os и osVersion будут значениями, сообщаемыми uname -s и uname -r соответственно.Если вам нужно что-то более сложное, тогда вам подойдет пакет с платформой!

3 голосов
/ 17 июля 2010

Большинство вещей в Tcl работают одинаково на Windows и Unix;Подавляющее большинство деталей, где скрыты различия.Чтобы обработать остальное:

  • Используйте file join вместо конкатенации с / между ними.
  • Используйте file nativename для создания имен файлов для передачи подпроцессам.
  • Будьте осторожны с load;то, что она делает, совсем не переносимо.
  • Команда info имеет несколько полезных вещей, таких как имя интерпретатора Tcl (info nameofexecutable), так что вы можете запускать интерпретаторы в подпроцессах легко и просто.
  • Некоторые вещи просто не переносимы (например, доступ к реестру Windows).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...