Connecting To A Process Instead Of The User
Just as the −i flag allows substitution of one side of the connection created by interact, the -u flag allows substitution of the other side. Specifically, the -u flag identifies a process to be used instead of the user.
spawn proc1 set proc1 $spawn_id spawn proc2 interact -u $proc1
The interact command above connects the input of proc1 to the output of proc2 and vice versa. The processes interact as shown in the following figure.

Figure 16-1. With the -u flag, the interact command connects two spawned processes together.
In the figure, there is no user involved. The user is still present but does not participate in the interact connection. The user keystrokes are not read nor is there any output to the user.
In Chapter 11 (p. 247), I showed how to have two chess processes communicate using expect commands in a loop. This could be rewritten using "interact -u" with the second chess process replacing the user. The original script was an expect command wrapped in a while loop, but the interact command loops internally. So using interact would avoid the extra command, making the script slightly shorter.
The chess problem is a familiar example but contrived—there is no real reason to use interact since the moves are synchronized. But in real uses, "interact -u" leads to much shorter programs.
Here is a script fragment to perform dialback, the act of ...