'''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 an end of file indication ( unless one of the ends is closed) read never returns. An example with gets and an example with read are given below. In both the gets and read examples you must flush the pipe before anything will show up on the read end. package require Tclx pipe rpipe wpipe; puts $wpipe "test" flush $wpipe puts "[gets $rpipe]" For the read example a larger the capture size given to the read command will make it less likely you will have to loop more than once. Also critical to using read was using fconfigure to make the read pipe non-blocking. package require Tclx pipe rpipe wpipe; 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.