1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
includefile(include/header)
COMMENT(manpage, section, releasedate, archive, short name)
manpage(FBB::Pipe)(3bobcat)(_CurYrs_)(libbobcat1-dev__CurVers_-x.tar.gz)
(Error handler)
manpagename(FBB::Pipe)(Defines a system level pipe)
manpagesynopsis()
bf(#include <bobcat/pipe>)nl()
Linking option: tt(-lbobcat)
manpagedescription()
bf(FBB::Pipe) objects may be used to construct a em(pipe). bf(FBB::Pipe)
objects offer a simple interface to the reading and writing ends of
pipes. bf(FBB::Pipe) objects are object-wrappers around the bf(pipe)(2) system
call.
includefile(include/namespace)
manpagesection(INHERITS FROM)
-
manpagesection(CONSTRUCTORS)
itemization(
itb(Pipe())
The default bf(Pipe()) constructor constructs a basic pipe, calling
bf(pipe)(2).
This constructor throws an tt(Errno) exception if the default bf(Pipe)
constructor did not properly complete. The thrown bf(Errno) object's
tt(which()) member shows the system's tt(errno) value set by the failing
bf(pipe)(2) function.
itb(Pipe(int const *fd))
This constructor expects two file descriptors, which already define a
pipe, stored at tt(fd). Following the construction of the tt(Pipe) object
the array at by tt(fd) is no longer used by the tt(Pipe) object.
)
The copy constructor is available.
Note that when the pipe goes out of scope, no bf(close)(2) operation is
performed on the pipe's ends. If the pipe should be closed by the desctructor,
derive a class from bf(Pipe)(3bobcat), whose destructor performs the required
closing-operation.
manpagesection(MEMBER FUNCTIONS)
itemization(
itb(int readFd() const)
Returns the pipe's file descriptor that is used for reading
itb(void readFrom(int filedescriptor))
Sets up redirection from the internal em(read) filedescriptor to the
given filedescriptor: information is read from the bf(FBB::Pipe) object when
reading from the provided filedescriptor.
itb(void readFrom(int const *filedescriptors, size_t n))
Sets up redirection from the internal em(read) filedescriptor to the
given filedescriptors: information is read from the bf(FBB::Pipe) object when
reading from any of the bf(n) provided filedescriptors (experimental).
itb(int readOnly())
Closes the writing end of the pipe, returns the reading end's file
descriptor.
itb(void verify() const)
Obsoleted, will be removed in a future Bobcat release.
itb(int writeFd() const)
Returns the pipe's file descriptor that is used for writing
itb(void writtenBy(int filedescriptor))
Sets up redirection from the internal em(write) filedescriptor to the
given filedescriptor: information is written to the bf(FBB::Pipe) object when
writing to the provided filedescriptor.
itb(void writtenBy(int const *filedescriptors, size_t n))
Sets up redirection from the internal em(write) filedescriptor to the
given filedescriptors: information is written to the bf(FBB::Pipe) object
when writing to each of the bf(n) provided filedescriptors.
itb(int writeOnly())
Closes the reading end of the pipe, returns the writing end's file
descriptor.
)
manpagesection(PROTECTED ENUMERATION)
The bf(RW) protected enumeration has the following elements:
itemization(
itb(READ)
The index in bf(d_fd[]) (see below) of the element holding the pipe's
reading file descriptor;
itb(WRITE)
The index in bf(d_fd[]) (see below) of the element holding the pipe's
writing file descriptor
)
manpagesection(PROTECTED DATA)
itemization(
itb(int d_fd[2])
The array holding the pipe's file descriptors. The bf(READ) element
contains the pipe's reading file descriptor, the bf(WRITE) element
contains the pipe's writing file descriptor,
)
manpagesection(EXAMPLE)
verb(
#include <bobcat/pipe>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <iostream>
#include <string>
using namespace std;
using namespace FBB;
int main()
{
Pipe p; // construct a pipe
cout << "Read file descriptor: " << p.getReadFd() << endl;
cout << "Write file descriptor: " << p.getWriteFd() << endl;
int pid = fork();
if (pid == -1)
return 1;
if (!pid) //child
{
p.readFrom(STDIN_FILENO); // read what goes into the pipe
string s;
getline(cin, s);
cout << "CHILD: Got `" << s << "'" << endl;
getline(cin, s);
cout << "CHILD: Got `" << s << "'" << endl;
return 0;
}
p.writtenBy(STDOUT_FILENO); // write to the pipe via cout
cout << "first line" << endl;
cout << "second line" << endl;
waitpid(pid, 0, 0);
return 0;
}
)
manpagefiles()
em(bobcat/pipe) - defines the class interface
manpageseealso()
bf(bobcat)(7), bf(pipe)(2), bf(mkfifo)(3)
manpagebugs()
Note that when the pipe goes out of scope, no bf(close)(2) operation is
performed on the pipe's ends. If the pipe should be closed by the desctructor,
derive a class from bf(Pipe)(3bobcat), whose destructor performs the required
closing-operation.
includefile(include/trailer)
|