in reply to I am seeking some Tk help
You're calling exit in child processes, which is actually calling Tk::exit. Tk::exit takes your Tk application down gracefully, and that's what it's trying to do when you call it. Explicitly calling CORE::exit or POSIX::_exit instead of exit in child processes should fix the problem.
The only time those exit calls will be reached is when your exec calls fail. You should probably replace those exit calls with error handling code so you can find out what's failing and why.