`
weiyuhu
  • 浏览: 231803 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

linux进程通信(三)--FIFO

阅读更多
   1. /*fifoserver.c:向FIFO中写入信息*/ 
   2. #include <sys/types.h> 
   3. #include <sys/stat.h> 
   4. #include <errno.h> 
   5. #include <fcntl.h> 
   6. #define FIFO_SERVER "FIFO4" 
   7. main(int argc,char** argv) 
   8. { 
   9.     int fd=0; 
  10.     char w_buf[4096]; 
  11.     int real_wnum; 
  12.     memset(w_buf,0,4096); 
  13.     if((mkfifo(FIFO_SERVER,O_CREAT|O_EXCL|0666)<0)&&(errno!=EEXIST)) 
  14.         printf("cannot create fifoserver\n"); 
  15.     /*此处存在着打开依赖,即若没有读端打开FIFO的话,写端就阻塞在写端*/ 
  16.     fd=open(FIFO_SERVER,O_WRONLY); 
  17.     if(fd==-1) 
  18.         printf("open error; no reading process\n"); 
  19.     printf("%d\n",fd); 
  20.      
  21.     real_wnum=write(fd,w_buf,2048); 
  22.     if(real_wnum==-1) 
  23.         printf("write to fifo error; try later\n"); 
  24.     else  
  25.         printf("real write num is %d\n",real_wnum); 
  26.     /*往FIFO写入的数据都是原子的,如果没有足够的空间,则会等待,而不是一点一点的写入。*/ 
  27.     real_wnum=write(fd,w_buf,4096); 
  28.     if(real_wnum==-1) 
  29.         printf("write to fifo error; try later\n"); 
  30.     else  
  31.         printf("real write num is %d\n",real_wnum); 
  32. } 





   1. /*fifoclient.c:从FIFO中读出数据*/ 
   2. #include <sys/types.h> 
   3. #include <sys/stat.h> 
   4. #include <errno.h> 
   5. #include <fcntl.h> 
   6. #define FIFO_SERVER "FIFO4" 
   7. main(int argc,char** argv) 
   8. { 
   9.     char r_buf[4096]; 
  10.     int  fd; 
  11.     int  r_size; 
  12.     int  ret_size; 
  13.     r_size=atoi(argv[1]); 
  14.     memset(r_buf,0,sizeof(r_buf)); 
  15.     fd=open(FIFO_SERVER,O_RDONLY); 
  16.     if(fd==-1) 
  17.     { 
  18.         printf("open %s for read error\n"); 
  19.         exit(1); 
  20.     } 
  21.     printf("%d\n",fd); 
  22.      
  23.     while(1) 
  24.     { 
  25.         ret_size=read(fd,r_buf,r_size); 
  26.         if(ret_size==-1) 
  27.             printf("no data avlaible\n"); 
  28.         else 
  29.             printf("real read bytes %d\n",ret_size); 
  30.         sleep(1); 
  31.     }    
  32.     unlink(FIFO_SERVER); 
  33. } 


  


  
分享到:
评论

相关推荐

    Linux进程通信--FIFO(写)

    Linux进程间通信之FIFO,适用于任意进程间. 此C文件为FIFO的写端

    Linux进程通信--FIFO(读)

    Linux进程间通信之FIFO,适用于任意两个进程间.此C文件件为读端.

    Linux下进程间通信FIFO演示程序

    一个简单程序,演示了Linux下的FIFO IPC机制 http://blog.csdn.net/ZhengZhiRen/archive/2010/05/21/5613843.aspx

    fifo.rar_fifo_fifo lin_fifo linux_linux fifo_进程间通信

    linux下进程间通信方式之一的fifo读写源程序。

    Linux进程通信:命名管道FIFO小结.doc

    Linux进程通信:命名管道FIFO小结.doc

    linux 进程间通信

    Demo是实现进程间通信的实例当前大型进程间通信都是以本Demo为例实现的 本代码通过测试无误直接贴过去就能运行Linux下 SYSTEM V

    LINUX进程间通信:PIPE与FIFO - 山 人 - 博客园1

    父进程可以往里写子进程可以从里读是用环形队列实现的数据从写端流入从读端流出这样就实现了进程间通信popen函数与pclose函数标准函数库提供了函数它创建一个管

    linux进程间通信 教程

    IPC(InterProcess Communication)是各种进程通信方式的统称,主要有下面几种类型:  管道  FIFO(命名管道)  消息队列  信号量  共享空间  套接口 前五种IPC只能用于一台主机内的进程间通信,套接口...

    linux进程间通信英文版

    linux系统进程间通信英文版,里面详细介绍了linux环境下常用的进程间通信方式,shared memery, pipes, FIFO, semaphores, message queue, sockets, rpc

    在Linux操作系统中实现内部进程通信

    Linux给我们提供了丰富的内部进程通信机制,包括共享内存、内存映射文件、先入先出(FIFO)、接口(sockets)以及多种用于同步的标识。在本文中主要讨论一下共享内存和内存映射文件技术。

    fifo进程间通信

    用于进程间通信fifo测试,用来学习fifo通信机智

    Linux 进程通信之FIFO的实现

    主要介绍了Linux 进程通信之FIFO的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Linux进程间通信.zip

    Linux进程间通信(fifo/pipe/mmap)后续将会完成进程间通信(消息队列/信号) 请关注

    Linux程序开发:QT的内部进程通信

    应用的种种需求,它还创建了许多新的系统机制,其中Qt 所特有的内部进程通信机制尤其 值得一提。本文分析了基于QT 的应用进程之间通信常用的三种机制:QCOP 协议, Signal-Slot 机制和FIFO 机制。给出了各自的使用...

    进程管理与通信总结

    基础概念: 进程与程序区别:进程是程序的一次动态执行过程.进程在内存中运行,程序在磁盘中存储. ...进程的通信 BSD(高校):pipe、fifo、信号 System V:share memory、消息队列、信号灯(ftok) BSD:Socket

    嵌入式系统/ARM技术中的linux下的进程通信

     linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。...

    FIFO进程通信实验室.rar

    FIFO技术不支持Windows,仅在Linux上可以使用。是属于Python2的版本

    进程通信.doc

    Linux进程间通信 一、进程间通信概述 进程通信有如下一些目的: A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间 B、共享数据:多个进程想要操作共享数据,一个进程...

Global site tag (gtag.js) - Google Analytics