`
weiyuhu
  • 浏览: 235875 次
  • 性别: 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进程间通信--IPC

    ### Linux进程间通信(IPC) 进程间通信(InterProcess Communication,简称IPC)是操作系统中一个重要的概念,指在计算机系统中不同的进程之间进行数据交换或通信的方法。在Linux环境下,进程间通信支持多种机制,...

    linux下进程间通信--消息队列

    在Linux操作系统中,进程间通信(IPC,Inter-Process Communication)是多个进程之间共享数据、交换信息的关键技术。其中,消息队列是一种高效且灵活的IPC机制,它允许进程将固定大小的消息发送到一个公共队列,其他...

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

    在Linux操作系统中,进程间通信(IPC,Inter-Process Communication)是多个进程之间共享数据、交换信息的关键技术。...对于Linux系统编程和多进程通信的学习者来说,理解和掌握FIFO是非常重要的一步。

    linux-fifo.rar_LInux FI_ProducerCustom_fifo_linux fifo_linux 进程

    在Linux操作系统中,FIFO(First In First Out)是一种特殊的文件类型,也称为命名管道,它允许不同进程间的数据通信。本项目“linux-fifo.rar”聚焦于在Linux环境下使用C语言实现进程间的FIFO通信,特别关注了...

    Linux进程间通信-命名管道实例.pdf

    在给定的文件“Linux进程间通信-命名管道实例.pdf”中,我们可以通过两个示例程序来理解命名管道的工作原理。 首先,我们来看写操作程序。这个程序主要负责向命名管道写入数据。在程序中,定义了一个常量`FIFO_...

    嵌入式Linux高级编程--04posix_进程间通信.ppt

    Linux进程间通信发展历程包括早期UNIX进程间通信、基于System V进程间通信、基于Socket进程间通信和POSIX进程间通信。 目前Linux使用的进程间通信方式包括管道、消息队列、共享内存、信号量和信号等。 管道通信是...

    Linux进程间通信-农业信息采集控制系统应用实例.pdf

    总结起来,这个实例深入浅出地展示了Linux进程间通信的实践应用,特别是如何通过命名管道实现数据采集和上传的同步,这对于理解和掌握Linux IPC机制以及在实际项目中应用这些技术具有重要的指导价值。

    fifo.rar_fifo_fifo lin_fifo linux_linux fifo_进程间通信

    标签中的"fifo_lin fifo_linux linux_fifo 进程间通信"进一步强调了这是关于Linux平台下的FIFO实现,涵盖了FIFO在Linux环境中的应用和进程间通信的基本概念。 通过研究这个压缩包内的源代码,开发者可以学习到如何...

    linux 进程通信-消息队列

    ### Linux 进程通信——消息队列详解 随着信息技术的发展,特别是九十年代以来,越来越多的数据处理系统采用了开放系统的架构,比如客户机/服务器模式。在这种模式下,客户端发起服务请求,服务器端响应并处理请求...

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

    ### LINUX进程间通信:PIPE与FIFO #### 概述 在Linux系统中,进程间的通信(IPC)是一项重要的功能,使得不同的进程能够共享或交换数据。本文将深入探讨两种基本且广泛使用的IPC机制——**PIPE**(管道)与**FIFO*...

    进程通信--邮槽

    进程通信是计算机科学中操作系统领域的一个重要概念,它允许不同进程之间共享数据和资源,以实现协同工作。邮槽(Message Queue)是一种典型的进程间通信(IPC,Inter-Process Communication)机制,尤其在多任务...

    linux 进程间通信

    本示例“Linux 进程间通信”着重演示了System V IPC机制,包括信号量(Semaphore, sem)、共享内存(Shared Memory, shm)和管道(FIFO)三种方式。这些技术广泛应用于构建复杂、高效的系统和服务,尤其是在需要不同...

    linux编程及应用-任继平08第08章进程间通信-管道和信号.ppt

    【进程间通信】是操作系统中进程协作和交互的重要机制,主要分为无名管道(Pipe)和有名管道(FIFO)两种类型。本章讲解了这两类管道的原理和使用方法,以及信号(Signal)的处理机制。 **无名管道(Pipe)**是一种半双工的...

    linux进程间通信ppt

    Linux的进程通信机制源自UNIX,融合了AT&T的System V IPC和BSD的套接字机制。UNIX IPC主要包括管道、FIFO和信号,System V IPC涉及消息队列、信号量和共享内存,而Posix IPC对应Posix消息队列、信号量和共享内存。...

    Linux-code.rar_linux进程通信

    这些代码实例是深入理解和掌握Linux进程通信的关键,对于提升你的Linux编程技能和解决实际问题的能力大有裨益。通过实践,你将能够灵活地运用这些通信机制,编写出高效、可靠的多进程应用程序。

    linux进程间通信

    提供的两份文档《7.0_Linux进程间通讯_上.pdf》和《7.1_Linux进程间通讯_下.pdf》将详细阐述上述各种通信机制,并可能包含实例代码和实践指导,对于深入理解和掌握Linux进程间通信非常有帮助。 总结,Linux进程间...

    图解linux进程间通信机制

    本文将深入解析Linux进程间通信机制,通过源代码分析和流程图来帮助理解各种IPC方法。 首先,我们要理解进程的概念。在Linux系统中,进程是程序的一次执行实例,每个进程都有自己的内存空间,相互独立。为了实现...

Global site tag (gtag.js) - Google Analytics