`
verge
  • 浏览: 13330 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
社区版块
存档分类
最新评论

进程间通信-管道 (菜鸟级学习笔记 2006-5-17)

阅读更多
今天看了一下进程间通信,在原来上操作系统的时候死活不知道管道是怎么一回事,看完并运行这个程序后总算清楚了,贴出来也给大家看下。
cpp 代码
 
  1. /* 进程间通信 
  2. * 管道──一种单向通信通道,数据在一端写入,在另一端读出 
  3. * pipedemo.c -- 演示使用管道进行I/O 
  4. */  
  5. #include  
  6. #include  
  7. #include  
  8.   
  9. int main(int argc, char **argv)  
  10. {  
  11.         static const char mesg[] = "Don't panic!";  
  12.         char buf[BUFSIZ];  
  13.         ssize_t rcount, wcount;  
  14.         int pipefd[2];  
  15.         size_t len;  
  16.          
  17.         // 系统调用pipe(int filedes[2])用于创建管道。若调用成功,它创建两个文件描述符并将它们分别存入filedes指向的数组中,这两个文件描述符分别指向管道的两端,filedes[0]用作读,filedes[1]用作写  
  18.         if (pipe(pipefd) < 0)  
  19.         {  
  20.                 fprintf(stderr, "%s: pipe failed: %s\n", argv[0], strerror(errno));  
  21.                 exit(1);  
  22.         }  
  23.          
  24.         printf("Read end = fd %d, write end = fd %d\n", pipefd[0], pipefd[1]);  
  25.   
  26.         len = strlen(mesg);  
  27.         // 向管道中写入  
  28.         if ((wcount = write(pipefd[1], mesg, len)) != len)  
  29.         {  
  30.                 fprintf(stderr, "%s: write failed: %s\n", argv[0], strerror(errno));  
  31.                 exit(1);  
  32.         }  
  33.         // 从管道中读数据  
  34.         if ((rcount = read(pipefd[0], buf, BUFSIZ)) != wcount)  
  35.         {  
  36.                 fprintf(stderr, "%s: read failed: %s\n", argv[0], strerror(errno));  
  37.                 exit(1);  
  38.         }  
  39.   
  40.         buf[rcount] = '\0';  
  41.   
  42.         printf("Read <%s> from pipe\n", buf);  
  43.         close(pipefd[0]);  
  44.         close(pipefd[1]);  
  45.   
  46.         return 0;  
  47. }  

运行:

[ 本帖最后由 verge 于 2006-5-14 07:52 PM 编辑 ]

图片附件: pipedemo.jpg (7.09 K)

 

 

分享到:
评论

相关推荐

    python-note 菜鸟学习笔记.zip

    "python-note 菜鸟学习笔记"可能包含了关于Python编程的基础概念,例如变量、数据类型(如整型、浮点型、字符串、布尔型)、流程控制(条件语句if-else、循环for、while)、函数定义和调用、模块导入等。 在Python...

    进程间通过命名管道通信实例

    总的来说,"进程间通过命名管道通信实例"这个项目是学习Windows IPC的一个好起点,它可以帮助开发者理解命名管道的概念,熟悉相关的API函数,并且通过实际编写代码来提升解决问题的能力。尽管开发者自称为“菜鸟”,...

    Linux零基础学习笔记 Shell编程-菜鸟入门(超详细)

    Linux是开源的操作系统,它的命令行界面,尤其是Shell编程...因此,无论你是技术小白还是希望进一步提升,这份“Linux零基础学习笔记 Shell编程-菜鸟入门”都会是你宝贵的资源。祝你在学习的道路上越走越远,不断进步!

    34--[菜鸟闯关].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码

    34--[菜鸟闯关].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码34--[菜鸟闯关].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码34--[菜鸟闯关].zip源码scratch2.0 3.0编程项目源文件源码案例素材源...

    DAMA学习笔记-第01-17章细化第5章数据建模较多内容

    DAMA学习笔记-第01-17章细化第5章数据建模较多内容

    股市菜鸟必读----“笑傲股市”学习笔记.pdf

    《股市菜鸟必读----“笑傲股市”学习笔记》是一本针对初级投资者的指南,它强调了理解财务报表和选择有潜力的股票的重要性。在股市投资中,掌握基础的分析技巧是至关重要的,特别是对于新手而言。以下是核心知识点的...

    前端初学者做笔记教程 MarkDown-Typora菜鸟入门

    前端初学者做笔记教程 MarkDown-Typora菜鸟入门

    菜鸟acm学习笔记

    "菜鸟ACM学习笔记"是一个宝贵的资源,旨在帮助初学者逐步掌握这个领域的核心知识。下面,我们将深入探讨ACM竞赛所需的关键技能、学习策略以及这份笔记可能涵盖的内容。 1. **算法基础**:ACM竞赛的核心是算法,包括...

    Python 实战-从菜鸟到大牛的进阶之路 - v1.1pdf

    《Python实战-从菜鸟到大牛的进阶之路》是一本专为Python初学者和有志于提升技能的开发者设计的教程。这本书旨在通过实践案例,帮助读者掌握Python编程的基础和高级技巧,从而逐步成长为Python大牛。v1.1版本的更新...

    Python实战-从菜鸟到大牛的进阶之路

    资源名称:Python 实战-从菜鸟到大牛的进阶之路资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    GIT基础命令使用-菜鸟入门级

    GIT基础命令使用-菜鸟入门级

    操作系统实验-CPU-进程-调度-内存分配-java

    第二期为结合别人代码,对本人菜鸟级作品的评估和对java项目开发的进一步探讨; 2,因为资源中会引用他人的作品,涉及原创的问题,故在“操作系统实验项目开发声明.txt”中予以声明, 3,因个人时间安排原因,暂上传...

    一个实战案例分析-供菜鸟学习.rar

    一个实战案例分析-供菜鸟学习

    js菜鸟快速学习笔记总结

    js学习中的重要笔记,非常适合菜鸟快速入门,看完即会使用js!

    大数据打造互联网-物流--菜鸟物流大数据应用分.pptx

    菜鸟物流大数据平台通过物流雷达预警、智能分仓、四级地址库以及电子面单等信息化产品,大幅提高了整个物流过程的库存效率、商品处理效率以及送达的准确率。这也使得物流公司能够更好地应对电子商务的需求,提高物流...

    菜鸟的ARM学习笔记proteus仿真

    【ARM学习基础】 在开始ARM的学习之前,需要具备一定的基础知识,包括: 1. 熟悉前辈们的经验分享,可以从论坛或社区获取相关信息。 2. 掌握C语言编程技能,因为ARM开发通常使用C/C++语言。 3. 了解微机原理,包括...

    Python 实战-从菜鸟到大牛的进阶之路

    Python 实战-从菜鸟到大牛的进阶之路 Python 实战-从菜鸟到大牛的进阶之路 Python 实战-从菜鸟到大牛的进阶之路

    新手C++学习笔记(仅供菜鸟成长参考).rar

    《新手C++学习笔记》是一份专为编程初学者打造的资源,旨在帮助那些刚刚踏入C++编程领域的“菜鸟”快速成长。这份笔记包含了前辈们的实践经验总结,具有很高的学习价值。文档以.doc格式存储,方便读者使用常见的文字...

Global site tag (gtag.js) - Google Analytics