![]() |
|
There's more than one way to do things | |
PerlMonks |
Re^3: Communicate with child process via stdin, stdoutby quester (Vicar) |
on Nov 20, 2011 at 06:41 UTC ( [id://939035]=note: print w/replies, xml ) | Need Help?? |
I don't have a copy of DCE-Whisperer to test with, so take this with a grain of salt... If I change the child process to /bin/cat, I can get the script to run if I uncomment the print $in AND change it to
which works because (in this case) it flushes the buffer for $in. You could also flush the $in buffer with $|=1;depending on the child process - for example cat doesn't work without a "\n". However, you may be running into buffering issues with DCE-Whisperer as well. As the documentation for IPC::Open2 mentions, "The big problem with this approach [that is, IPC::Open2 itself] is that if you don't have control over source code being run in the child process, you can't control what it does with pipe buffering.... The IO::Pty and Expect modules from CPAN can help with this, as they provide a real tty (well, a pseudo-tty, actually), which gets you back to line buffering in the invoked command again."
In Section
Seekers of Perl Wisdom
|
|