Purpose: Show how to create a temp file. DL ---- Tcl doesn't have a built-in command to create a temporary file and there are no built-in variables for temp directories, so you have to do a little work. Best is to figure out the temp directory separately. Then you can create multiple files in it. switch $tcl_platform(platform) { unix { set tmpdir /tmp # or even $::env(TMPDIR), at times. } macintosh { set tmpdir $env(TRASH_FOLDER) ;# a better place? } default { set tmpdir [pwd] catch {set tmpdir $env(TMP)} catch {set tmpdir $env(TEMP)} } } If you just want one temp file: set filename [file join $tmpdir [pid]] If you want multiple tmpfiles, consider appending things like the application name, counter, time stamp, etc. For example: set file [file join $tmpdir $appname.[pid].[incr ::globalCounter]] ''DKF'' - Or create in a subdirectory/subfolder if {![file exists [file join $tmpdir [pid]]]} { file mkdir [file join $tmpdir [pid]] } set file [file join $tmpdir [pid] [incr ::globalCounter]] ''[Michael Schlenker]'' - Be aware of potential race conditions while opening temp files. The linux secure programming howto has some nice examples for the linux platform: http://www.linuxdoc.org/HOWTO/Secure-Programs-HOWTO/avoid-race.html To be sure to get a new tempfile (and not some evil symlink) try something like: set access [list RDWR CREAT EXCL TRUNC] set perm 0600 if {[catch {open $file $access $perm} fid ]} { # something went wrong error "Could not open tempfile." } # ok everything went well