1. Function description
 
Pipe (Establish pipeline):
 
1) header file #include
 
2) define function: int pipe (int filedes[2]);
 
3 Function Description: Pipe () creates the pipe and returns the file descriptor from the parameter Filedes array.
 
Filedes[0] is the read end of the pipe
 
FILEDES[1] is the write end of the pipe.
 
4) return value: If successful, return zero, otherwise return-1, the reason for the error in errno.
 
Error code:
 
Emfile process has run out of file descriptive words
 
The Enfile system has no file descriptors available.
 
Efault parameter Filedes array address is not valid.
 
Example:
 
root@wl-ms-7673:/home/wl/Desktop/c++# cat-n pipe_test.cpp
 
1
 
2 #include
 
3 #include
 
4 #include
 
5 #include
 
6 #include
 
7 #include
 
8 #include
 
9/*
 
10 * Program Entrance
 
11 * * * * *
 
int main ()
 
13 {
 
int pipe_fd[2];
 
pid_t pid;
 
Char buf_r[100];
 
char* P_wbuf;
 
int r_num;
 
19
 
memset (buf_r,0,sizeof (buf_r));
 
21st
 
22/* Create Pipeline * *
 
if (pipe (PIPE_FD) <0)
 
24 {
 
-printf ("Pipe Create Errorn");
 
return-1;
 
27}
 
28
 
29/* Create CHILD process * *
 
The If ((Pid=fork ()) ==0)//child Process Execution sequence
 
31 {
 
printf ("n");
 
Close (pipe_fd[1]);//subprocess closes the write end of the pipe first
 
Sleep (2); /* Let the parent process run first so that the parent process writes the child process before the content reads */
 
if ((R_num=read (pipe_fd[0],buf_r,100)) >0)
 
36 {
 
Notoginseng printf ("%d numbers read from the pipe is%sn", r_num,buf_r);
 
38}
 
Close (pipe_fd[0]);
 
+ exit (0);
 
41}
 
Pid>0///parent Process Execution sequence
 
43 {
 
(Pipe_fd[0]); The parent process closes the read end of the pipe first
 
(Pipe_fd[1], "Hello", 5)!=-1)
 
-printf ("Parent write1 hello!n");
 
if (write (pipe_fd[1], "pipe", 5)!=-1)
 
-printf ("Parent write2 pipe!n");
 
Close (pipe_fd[1]);
 
Wait (NULL); /* Wait for child process to end * *
 
Wuyi exit (0);
 
52}
 
0;
 
54}
 
55
 
56
 
root@wl-ms-7673:/home/wl/Desktop/c++# g++ pipe_test.cpp-o pipe_test
 
root@wl-ms-7673:/home/wl/Desktop/c++#./pipe_test
 
Parent Write1 hello!
 
Parent Write2 pipe!
 
Numbers read from the pipe is Hello pipe
 
root@wl-ms-7673:/home/wl/Desktop/c++#
 
The nameless pipe was created before fork was created, by creating a pipe through pipe () and then creating a subprocess through fork, the child process copies the code snippet/data segment and stack segment of the parent process, so the created pipe is copied, one copy of the child process, one copy of the parent process, in order for the pipe to communicate normally, You must handle an existing pipeline.