概述
1. 函数说明
pipe(建立管道):
1) 头文件 #include
2) 定义函数: int pipe(int filedes[2]);
3) 函数说明: pipe()会建立管道,并将文件描述词由参数filedes数组返回。
filedes[0]为管道里的读取端
filedes[1]则为管道的写入端。
4) 返回值: 若成功则返回零,否则返回-1,错误原因存于errno中。
错误代码:
EMFILE 进程已用完文件描述词最大量
ENFILE 系统已无文件描述词可用。
EFAULT 参数 filedes 数组地址不合法。
示例:
桌面/c++# cat -n pipe_test.cpp
1
2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 /*
10 * 程序入口
11 * */
12 int main()
13 {
14 int pipe_fd[2];
15 pid_t pid;
16 char buf_r[100];
17 char* p_wbuf;
18 int r_num;
19
20 memset(buf_r,0,sizeof(buf_r));
21
22 /*创建管道*/
23 if(pipe(pipe_fd)<0)
24 {
25 printf("pipe create errorn");
26 return -1;
27 }
28
29 /*创建子进程*/
30 if((pid=fork())==0) //子进程执行序列
31 {
32 printf("n");
33 close(pipe_fd[1]);//子进程先关闭了管道的写端
34 sleep(2); /*让父进程先运行,这样父进程先写子进程才有内容读*/
35 if((r_num=read(pipe_fd[0],buf_r,100))>0)
36 {
37 printf("%d numbers read from the pipe is %sn",r_num,buf_r);
38 }
39 close(pipe_fd[0]);
40 exit(0);
41 }
42 else if(pid>0) //父进程执行序列
43 {
44 close(pipe_fd[0]); //父进程先关闭了管道的读端
45 if(write(pipe_fd[1],"Hello",5)!=-1)
46 printf("parent write1 Hello!n");
47 if(write(pipe_fd[1]," Pipe",5)!=-1)
48 printf("parent write2 Pipe!n");
49 close(pipe_fd[1]);
50 wait(NULL); /*等待子进程结束*/
51 exit(0);
52 }
53 return 0;
54 }
55
56
桌面/c++# g++ pipe_test.cpp -o pipe_test
桌面/c++# ./pipe_test
parent write1 Hello!
parent write2 Pipe!
10 numbers read from the pipe is Hello Pipe
桌面/c++#
本篇文章来源于 Linux公社网站() 原文链接:
最后
以上就是诚心秀发为你收集整理的Linux如何运行pipe1,Linux C++管道之pipe的全部内容,希望文章能够帮你解决Linux如何运行pipe1,Linux C++管道之pipe所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复