Acabei executando o programa usando exec e usando o comando trap do wait para interceptar o SIGINT. O subprograma ainda está terminado (na verdade, pode não haver uma maneira de evitar que isso esteja usando exec ), mas usando trap e catch em torno de exec , o script tcl pode continuar sendo executado.