Let's say I have two programs which play chess: chess_1 and chess_2. They keep track of the board themselves, and take as input opposing moves, and then output their moves. For example, if I wanted to play against chess_1, I would do the following:I would start the program (assuming I am white)$ ./chess_1                  # program starts and hangs for input  <my move>                  # my input  <the bot's move>           # bot output  <my next move>             # my input.... < etc. > .....And the bot would keep track of the game board. My question is, how can I make chess_1 play against chess_2?
Piping output between two simultaneous, independent programs
pipe