发布时间:2014-09-05 17:45:03作者:知识屋
1. 函数说明
pipe(建立管道):
1) 头文件 #include<unistd.h>
2) 定义函数: int pipe(int filedes[2]);
3) 函数说明: pipe()会建立管道,并将文件描述词由参数filedes数组返回。
filedes[0]为管道里的读取端
filedes[1]则为管道的写入端。
4) 返回值: 若成功则返回零,否则返回-1,错误原因存于errno中。
示例:
root@wl-MS-7673:/home/wl/桌面/c++# cat -n pipe_test.cpp 1 2 #include <unistd.h> 3 #include <sys/types.h> 4 #include <errno.h> 5 #include <stdio.h> 6 #include <string.h> 7 #include <stdlib.h> 8 #include <sys/wait.h> 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 error/n"); 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 %s/n",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 root@wl-MS-7673:/home/wl/桌面/c++# g++ pipe_test.cpp -o pipe_testroot@wl-MS-7673:/home/wl/桌面/c++# ./pipe_test parent write1 Hello!parent write2 Pipe!10 numbers read from the pipe is Hello Piperoot@wl-MS-7673:/home/wl/桌面/c++#
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能