⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pipe.h

📁 C++ class libraries for network-centric, portable applications, integrated perfectly with the C++ St
💻 H
字号:
//// Pipe.h//// $Id: //poco/1.2/Foundation/include/Poco/Pipe.h#1 $//// Library: Foundation// Package: Processes// Module:  Pipe//// Definition of the Pipe class.//// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.// and Contributors.//// Permission is hereby granted, free of charge, to any person or organization// obtaining a copy of the software and accompanying documentation covered by// this license (the "Software") to use, reproduce, display, distribute,// execute, and transmit the Software, and to prepare derivative works of the// Software, and to permit third-parties to whom the Software is furnished to// do so, all subject to the following:// // The copyright notices in the Software and this entire statement, including// the above license grant, this restriction and the following disclaimer,// must be included in all copies of the Software, in whole or in part, and// all derivative works of the Software, unless such copies or derivative// works are solely in the form of machine-executable object code generated by// a source language processor.// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER// DEALINGS IN THE SOFTWARE.//#ifndef Foundation_Pipe_INCLUDED#define Foundation_Pipe_INCLUDED#include "Poco/Foundation.h"#include "Poco/PipeImpl.h"namespace Poco {class Foundation_API Pipe	/// 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.{public:	typedef PipeImpl::Handle Handle; /// The read/write handle or file descriptor.		enum CloseMode /// used by close()	{		CLOSE_READ  = 0x01, /// Close reading end of pipe.		CLOSE_WRITE = 0x02, /// Close writing end of pipe.		CLOSE_BOTH  = 0x03  /// Close both ends of pipe.	};		Pipe();		/// Creates the Pipe.		///		/// Throws a CreateFileException if the pipe cannot be		/// created.			Pipe(const Pipe& pipe);		/// Creates the Pipe using the PipeImpl from another one.	~Pipe();		/// Closes and destroys the Pipe.	Pipe& operator = (const Pipe& pipe);		/// Releases the Pipe's PipeImpl and assigns another one.	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.	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.	Handle readHandle() const;		/// Returns the read handle or file descriptor		/// for the Pipe. For internal use only.			Handle writeHandle() const;		/// Returns the write handle or file descriptor		/// for the Pipe. For internal use only.	void close(CloseMode mode = CLOSE_BOTH);		/// Depending on the argument, closes either the		/// reading end, the writing end, or both ends		/// of the Pipe.		private:	PipeImpl* _pImpl;};//// inlines//inline int Pipe::writeBytes(const void* buffer, int length){	return _pImpl->writeBytes(buffer, length);}inline int Pipe::readBytes(void* buffer, int length){	return _pImpl->readBytes(buffer, length);}inline Pipe::Handle Pipe::readHandle() const{	return _pImpl->readHandle();}inline Pipe::Handle Pipe::writeHandle() const{	return _pImpl->writeHandle();}} // namespace Poco#endif // Foundation_Pipe_INCLUDED

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -