class Pipe

Library: Foundation
Package: Processes
Header: Poco/Pipe.h


This class implements an anonymous pipe.

Pipes are a common method of inter-process communication - on Unix, pipes are the oldest form of IPC.

A pipe is a half-duplex communication channel, which means that data only flows in one direction. Pipes have a read-end and a write-end. One process writes to the pipe and another process reads the data written by its peer. Read and write operations are always synchronous. A read will block until data is available and a write will block until the reader reads the data.

The sendBytes() and readBytes() methods of Pipe are usually used through a PipeOutputStream or PipeInputStream and are not called directly.

Pipe objects have value semantics; the actual work is delegated to a reference-counted PipeImpl object.

Member Summary

Member Functions: close, operator =, readBytes, readHandle, writeBytes, writeHandle



typedef PipeImpl::Handle Handle;

The read/write handle or file descriptor.



used by close()


Close reading end of pipe.


Close writing end of pipe.


Close both ends of pipe.




Creates the Pipe.

Throws a CreateFileException if the pipe cannot be created.


    const Pipe & pipe

Creates the Pipe using the PipeImpl from another one.




Closes and destroys the Pipe.

Member Functions


void close(
    CloseMode mode = CLOSE_BOTH

Depending on the argument, closes either the reading end, the writing end, or both ends of the Pipe.

operator =

Pipe & operator = (
    const Pipe & pipe

Releases the Pipe's PipeImpl and assigns another one.

readBytes inline

int readBytes(
    void * buffer,
    int length

Receives data from the pipe and stores it in buffer. Up to length bytes are received. Blocks until data becomes available.

Returns the number of bytes received, or 0 if the pipe has been closed.

Throws a ReadFileException if nothing can be read.

readHandle inline

Handle readHandle() const;

Returns the read handle or file descriptor for the Pipe. For internal use only.

writeBytes inline

int writeBytes(
    const void * buffer,
    int length

Sends the contents of the given buffer through the pipe. Blocks until the receiver is ready to read the data.

Returns the number of bytes sent.

Throws a WriteFileException if the data cannot be written.

writeHandle inline

Handle writeHandle() const;

Returns the write handle or file descriptor for the Pipe. For internal use only.