Version 0.8.0 of Pstreams is available now, with new features and performance optimisations.
The child process will now switch to a new process group, with the
process group ID the same as the PID. The basic_pstreambuf::killpg()
member function has been added to send a signal to the child's process
group.
New constructors to simplify the common case where the string specifying
the file to be executed is the same as the first element of the argv_type
vector.... read more
I've imported the PStreams CVS history into a Git repository, still hosted at SourceForge.
The CVS repo is still available, but future changes will be made in Git not CVS.
See https://sourceforge.net/scm/?type=git&group_id=48695 for access to the Git repo.
The licence has been updated to v3 of the LGPL.
The other reason for this release is that std::istream:readsome() can now be used to do a non-blocking read from one of the input streams.
Files can be downloaded under the 0.5.x release on
http://sf.net/projects/pstreams/
Includes support for streambuf::in_avail() to tell whether input
is available without blocking.
It's now possible to tell whether a command failed to
execute, since is_open() will not return true unless the
command was executed successfully, this is only possible
when using the argv functions to open a pstream.
See project website for details and downloads.
This release features numerous bug fixes and improvements made since the previous 0.48 release, including better standard conformance, allowing compilation with GCC 3.4 and the Tru64 cxx compiler.
The latest release of PStreams, 0.40, is a beta release. All my tests work now and the class interface is stable.
There was a problem with the pstreambuf::fopen() function, where it tried to call a missing function. Fixed in CVS and in latest tar.gz file.
PStreams has been relicensed under the GNU Lesser General Public License in order to allow it to be useful to more people in more programs.
Grrr - half the links on pstreams.sf.net are broken. I'll fix them, and do some more work on PStreams itself A.S.A.P
When using more than one pipe to the child process only the first pipe would be opened.
Thanks to Ashley Sanders for spotting it.
Fixed in CVS.
I've submitted a request for the PStreams repository to be imported so CVS access should be available on SourceForge soon. UPDATE: repository available now!
Two tarballs uploaded to SourceForge, one containing the latest version (using hand-rolled pipes and fork/exec code) and one of an older version that still uses popen() (so is limited by the system's popen() implementation).
PStreams has jsut been registered on SourceForge. I'll move the CVS history over as soon as I get a chance.