Pipes can be understood as follows
A UNIX/Linux pipe can be used for IPC between related processes on a system. Communicating processes naturally have sibling or parent-child relationship. At the command line, a pipe can be used to connect the standard output of one process to the standard input of another. Pipes provide a method or the technique of one-way communication and for this reason may be called half-duplex pipes.
The pipe() system call creates a pipe and returns back to the two file descriptors, one for reading and another for writing, as shown in Figure drawn below. The files connected with these file descriptors are streams and are both opened for reading and writing. Obviously, to use such a channel properly, one requires to form some kind of the protocol in which data is sent over the pipe. Also, if we need a two-way communication, and hence we'll need two pipes.
Figure drawn above is A UNIX/Linux pipe with the read end and a write end
The system assures us one thing which is: the order, in which data is written to the pipe, is the same order as that in which data is read from the pipe. The system also assures that data won't get lost in the middle, unless one of the processes (the sender or the receiver) exits prematurely. The pipe() system call is used to create a read-write pipe that may later be used to communicate with a process we'll fork off. The synopsis of the system call is:
#include <unistd.h>
int pipe (int fd[2]);
Each array element stores a file descriptor. fd[0] is the file descriptor for the read end of the pipe (i.e., the descriptor to be used with the read system call), whereas fd[1] is the file descriptor for the write end of the pipe. (i.e., the descriptor to be used with the write system call).The function returns -1 if the call fails. A pipe is a bounded buffer and the maximum data written is PIPE_BUF, defined in <sys/param.h> in UNIX and in
<linux/param.h> in Linux as 5120 and 4096, respectively.
Lets see an example of a two-process system in which the parent process creates a pipe and forks a child process. The child process writes the 'Hello, world!' message to the pipe. The parent process reads this messages and displays it on the monitor screen. Figure 8.2 shows the protocol for this communication and Figure 8.3 shows the corresponding C source code.
Figure drawn above Use of UNIX/Linux pipe by the parent and child for the half-duplex communication
Figure gives the Sample code showing use of UNIX/Linux pipe for IPC between related processes-child write the "Hello, world!" message to parent, who reads its and displays it on the screen of the monitor
In the program given to us, the parent process first creates a pipe and then forks the child process. On the successful execution, the pipe() system call creates a pipe, with its read end descriptor saved in pipefd[0] and write end descriptor saved in pipefd[1]. We call fork() to create a child process, and then we use the fact that the memory image of the child process is identical to the memory image of the parent process, so the pipefd[] array is still defined the same way in both of them, and thus they both have the file descriptors of the pipe. Furthermore, because the file descriptor table is also copied during the fork, the file descriptors are still valid inside the child process. Thus, the parent and child processes can use the pipe for one-way communication as outlined above.
Email based Operating System assignment help - homework help at Expertsmind
Are you searching Operating System expert for help with Pipes questions? Pipes topic is not easier to learn without external help? We at www.expertsmind.com offer finest service of operating system assignment help and operating system homework help. Live experts are available for 24x7 hours helping students in their Pipes related problems. We provide step by step Pipes question's answers with 100% plagiarism free content. We prepare quality content and notes for Pipes topic under operating system theory and study material. These are avail for subscribed users and they can get advantages anytime.
Why Expertsmind for assignment help
- Higher degree holder and experienced tutors network
- Punctuality and responsibility of work
- Quality solution with 100% plagiarism free answers
- Time on Delivery
- Privacy of information and details
- Excellence in solving operating system questions in excels and word format.
- Best tutoring assistance 24x7 hours