On Friday 02 March 2007 17:07 Douglas McNaught wrote: > Vincenzo Romano <vincenzo.romano@xxxxxxxxx> writes: > > Hi all. > > > > Under Linux I'm trying to communicate to an instance of the psql client > > running in the background through a couple of named pipes. > > I'd like to do something like this: > > > > $ mkfifo /tmp/pg_ipipe /tmp/pg_opipe > > $ psql -d testdb -U testuser < /tmp/pg_ipipe > /tmp/pg_opipe & > > ... > > $ echo "\t" > /tmp/pg_ipipe > > $ echo "select count(*) from test_table;" > /tmp/pg_ipipe > > $ read COUNT < /tmp/pg_opipe > > > > The psql client connects to the DB abd waits for the first commad coming > > from the "pg_ipipe" and executes it. Fine. > > The problem is that it quits soon after instead of waiting for the second > > (and any subsequent) command, as we all see in the usual command line > > usage. I've also tried to add a "--file -" with no luck. > > It seems that when the psql is getting the input from a named pipe acts > > as if the "--command" option were active. > > > > I'm sure I'm missing something. But don't know what. > > Is there any hint? > > psql gets an EOF on the named pipe when the first shell command > exits. You need to batch all your commands and send them in one shell > command, so it keeps the pipe open until it's done. > > -Doug Using "echo -n" instead of the plain "echo" to avoid sending the EOL makes the psql client behaving the same way: quitting after the first complete command. This makes useless the input redirection from anything other than a file. I'm now going to read the sourcecode for the psql client. Maybe it's a (kind of) bug in the psql code. -- Vincenzo Romano ---- Maybe Computers will never become as intelligent as Humans. For sure they won't ever become so stupid. [VR-1987]