'''pipe ?fileId_var_r ?fileId_var_w''' Create a pipe. If fileId_var_r and fileId_var_w are specified, then pipe will set the a variable named fileId_var_r to contain the fileId of the side of the pipe that was opened for reading, and fileId_var_w will contain the fileId of the side of the pipe that was opened for writing. If the fileId variables are not specified, then a list containing the read and write fileIdw is returned as the result of the command. There is a proposal [tclx file commands for core] [[seems like something is missing here...]] ---- [[We also could talk about the abstract notion of "pipe", and how it comes up in conversation far more than just its use in reference to this command.]] ---- Can somebody give an example for this? My attempt to use package require Tclx pipe rpipe wpipe; puts $wpipe "test\n"; read $wpipe simply leads to a lock up. Any help appreciated ;). The problem is that read tries to read to the end of file. Since a pipe does not have and end of file indication ( unless one of the ends is closed) read never returns. If you use the following or used read with a specific capture size as seen in the 2nd example ---- #this seems to work package require Tclx pipe rpipe wpipe; puts $wpipe "test" flush $wpipe puts "[gets $rpipe]" ---- and so does this more elaborate version using read with a capture size of 1000 bytes the larger the capture size the less likely you will have to loop more than once. Also critical was using fconfigure to make it non-blocking. ---- fconfigure $rpipe -blocking 0 puts $wpipe "test" flush $wpipe set buff "" set done 0 while { !$done } { set appstr [ read $rpipe 1000 ] append buff $appstr if { [ string length $appstr ] != 1000 } { set done 1; } } puts "$buff" ---- [Category Command] for [TclX] package.