Process Pipelines And Ptys
The spawn command does not provide any facility for redirection or pipelines because the need for it is almost non-existent. Automating interactive programs virtually always require much more sophisticated handling of input and output, such as looking at the output before deciding on the next input.
Rather than burden the spawn command with features that are almost never used, it is easier to call upon existing programs in those rare occasions. There are a variety of programs that support redirection including Tcl’s open command. Tcl’s open command is also capable of building pipelines.
In the previous section, I noted that fifos cannot be handled with spawn on some operating systems. The following command interposes a cat process. The "|" indicates that the following file should be started as a process rather than a file that is simply read or written.
spawn -open [open "|cat -u $fifo" r]
While seemingly redundant, the fifo eof is now handled by cat which converts this to an eof that is detectable by Expect.[47] The same solution works with other devices that are not supported by select or poll.[48]
Additional processes can be strung together in the first argument to open by separating them with "|" symbols. Bidirectional processes and process pipelines can be generated. They require the w+ flag to indicate that they will be both read and written.
All of the files, processes, and pipelines opened by open are opened without a terminal interface. For many programs, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access