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 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

桌面/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相关推荐

  1. Linux如何运行pipe1,Linux中的管道

    一.管道是进程间通信的一种重要手段,在linux中没有使用专门的数据结构,而是借助了文件系统的file结构和VFS索引节点inode.通过两个file结构指向同一个临时的VFS索引节点,而这个索引节点 ...

  2. 内网linux服务器安装运行环境,linux下如何在内网中安装docker_网站服务器运行维护...

    docker的镜像和仓库是什么_网站服务器运行维护 docker镜像就像是一个linux的文件系统,这个文件系统里面包含了可以运行在linux内核的程序以及相应的数据.仓库是集中存储镜像的地方. 一. ...

  3. linux+后台运行+nohup,Linux后台运行命令集(、fg、bg、jobs、nohup、ctrl + z)

    Linux后台运行命令集(&.fg.bg.jobs.nohup.ctrl + z) 1).& 命令或进程最后加上"&",可以把此操作放到后台执行: 2).c ...

  4. linux安装运行jmeter,Linux下安装运行Jmeter程序

    Jmeter在linux系统中运行需要安装jdk和Jmeter两个软件: 1.安装JDK 先检查系统是否有安装jdk,在linux中执行如下命令:java -version  如果返回版本信息,说明系 ...

  5. linux 服务器运行慢,Linux运行慢?找出原因

    对Linux 和Windows 都很熟悉的同学会告诉你:在同一配置上Linux 将会有更加出色的表现.但,事实并不全是这样.有些同学会感觉到与上面的说法正好想法.据Top500统计,约90%的世界一流 ...

  6. linux sh 运行命令,linux shell运行命令详解

    在Linux下,如果你需要运行shell程序,那么应该使用那个命令呢?下面由学习啦小编为大家整理了linux shell运行命令的相关知识,希望对大家有帮助! linux shell运行命令 说明:用 ...

  7. c#在linux上运行,在Linux上运行C#的方法

    本文实例讲述了在Linux上运行C#的方法.分享给大家供大家参考.具体方法如下: 在任何一个平台(操作系统+硬件体系)上,编写和运行程序的三个最根本的需求是库.编译器/解释器.运行环境.库以类和方法( ...

  8. 【Linux系统编程】进程间通信--无名管道(pipe)

    管道的概述 管道也叫无名管道,它是是 UNIX 系统 IPC(进程间通信) 的最古老形式,所有的 UNIX 系统都支持这种通信机制. 无名管道有如下特点: 1.半双工,数据在同一时刻只能在一个方向上流 ...

  9. linux怎么运行conda,linux怎么用conda

    1.1.Numba的约5分钟指南 Numba是Python的即时编译器,它最适用于使用NumPy数组和函数以及循环的代码.使用Numba的最常用方法是通过其装饰器集合,可以应用于您的函数来指示Numb ...

最新文章

  1. gltf与glb格式转换 gltf-pipeline、binary-gltf-utils
  2. 朴素贝叶斯法(二)——基本方法
  3. springcloud13---zuul
  4. linux kernel同步方法的总结
  5. socket网络编程——TCP编程流程及端口号占用问题
  6. 01.CSS动画--transform
  7. 2019最新 Java商城秒杀系统的设计与实战视频教程(SpringBoot版)
  8. [react-router] React-Router的<Link>标签和<a>标签有什么区别
  9. 心得7--JDBC回顾-批处理案例解说
  10. java拓扑圆形布局算法
  11. css flex布局
  12. linux 上传下载工具有哪些,Linux上传下载工具
  13. 实现多楼层,每个楼层多房间,上下拖动切换楼层,左右拖动查看其他房间
  14. rj45 千兆接口定义_rj45 千兆接口定义_rj45接口定义,大神教你秒懂rj45的接线方法【详细方法】...
  15. 十大热门编程语言优缺点对比
  16. 分享一下最近微信域名防封的一些心得和经验,怎么才能做到域名防封呢
  17. Python Pygame实战之打地鼠小游戏
  18. 给中国学生的第六封信——选择…
  19. Mysql报错130_Mysql报错Forcing close of thread 139 user: 'root'
  20. 假设检验中原假设和备择假设的选取问题

热门文章

  1. 苹果Mac隔空接力Handoff失效怎么办?
  2. 谁在说谎c语言编译,C趣味程序百例(15)谁在说谎
  3. 用ESP8266+android,制作自己的WIFI小车(ESP8266篇)
  4. SystemVerilog学习笔记
  5. Cpu占用率检测以及 Cpu Burn
  6. 智能家居(2) —— 工厂模式实现烟雾报警
  7. 电子科技大学计算机科学与技术学硕,2021年电子科技大学计算机科学与技术(081200)考研专业目录_硕士研究生考试范围 - 学途吧...
  8. 什么是核心交换机?选择核心交换机的重要考虑因素
  9. 一起来飞车服务器显示不全,一起来飞车不同服务器可以结婚吗
  10. 淘宝搜索相关关键词查询易语言代码