Piping Stockfish input I'm trying to write a Linux command line UCI interface for Stockfish. My program writes a bunch of commands to a text file and then tries to pipe them to Stockfish via the command line. My problem is, whenever I try to analyse a position, the program exits almost immediately:

sf.txt:

position startpos moves e2e4
go movetime 5000


output:

~$ stockfish &lt; sf.txt
Stockfish 261014 64 by Tord Romstad, Marco Costalba and Joona Kiiski
info nodes 0 time 2
bestmove a7a6 ponder (none)


As you can see, the program exits in 2 ms instead of waiting for the analysis to finish. Has anyone delt with this issue before? Is there a preferred way of interfacing with Stockfish?
Solution: Use 'expect' script as shown below. Tested with stockfish_8_x64_modern. 


  BlindKungFuMaster: "I think the main problem is that the uci protocol is a dialog."
    I agree!


#!/usr/bin/expect

spawn ~/stockfish_8_x64_modern

expect -timeout 1000  Linscott 

send "setoption name Ponder  value false \r isready \r"

expect -timeout 1000  readyok

send "setoption name Hash    value 2048 \r isready \r"

expect -timeout 1000  readyok

send "setoption name Threads value 8    \r isready \r"

expect -timeout 1000  readyok

send "setoption name MultiPV value 4    \r isready \r"

expect -timeout 1000  readyok

set row8 "rnbqkbnr"

set row7 "pppppppp"

set row6 "11111111"

set row5 "11111111"

set row4 "11111111"

set row3 "11111111"

set row2 "PPPPPPPP"

set row1 "RNBQKBNR"


send "position fen $row8/$row7/$row6/$row5/$row4/$row3/$row2/$row1 w KQkq - 0 1 moves e2e4 \r isready \r"

expect -timeout 1000  readyok

send "go infinite \r" 

expect -timeout 999999  readyok