Я пытаюсь запустить скомпилированный код для обработки сложных вычислений, необходимых для сценария TCL, который я пишу. Когда я запускаю код, я использую:
if {[catch {exec $cwd/TaubinSmoother &} error_out]} {
if {[string first "couldn" $error_out] != -1} {
puts "TaubinSmoother software could not be located."
exit
} else {
puts "$error_out"
}
}
При выполнении команды exec
ошибки, по-видимому, нет, но она действительно генерируется, поскольку среда PATH неправильно настроена для разделяемых библиотек, которые TaubinSmoother должны запускать. Я пытался использовать:
proc launch {} {
set error_catch [catch {exec $cwd/TaubinSmoother &} error_out detail]
return $detail
}
set cwd [file dirname [info script]]
set error_out launch
puts "$error_out"
Это тоже не сработало, так как я получил только «запуск», напечатанный на стандартный вывод. Я прочитал TCL, получаю полное сообщение об ошибке в команде catch и больше о catch и return , но ответ на мой вопрос не сработал и примеры на man-страницы не помогли. Как получить реальную ошибку, чтобы вернуться к моему работающему скрипту, чтобы я мог предупредить будущих пользователей о возникших проблемах?