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,适用于任意进程间. 此C文件为FIFO的写端
Linux进程间通信之FIFO,适用于任意两个进程间.此C文件件为读端.
### Linux进程间通信(IPC) 进程间通信(InterProcess Communication,简称IPC)是操作系统中一个重要的概念,指在计算机系统中不同的进程之间进行数据交换或通信的方法。在Linux环境下,进程间通信支持多种机制,...
在Linux操作系统中,进程间通信(IPC,Inter-Process Communication)是多个进程之间共享数据、交换信息的关键技术。其中,消息队列是一种高效且灵活的IPC机制,它允许进程将固定大小的消息发送到一个公共队列,其他...
在Linux操作系统中,进程间通信(IPC,Inter-Process Communication)是多个进程之间共享数据、交换信息的关键技术。...对于Linux系统编程和多进程通信的学习者来说,理解和掌握FIFO是非常重要的一步。
在Linux操作系统中,FIFO(First In First Out)是一种特殊的文件类型,也称为命名管道,它允许不同进程间的数据通信。本项目“linux-fifo.rar”聚焦于在Linux环境下使用C语言实现进程间的FIFO通信,特别关注了...
在给定的文件“Linux进程间通信-命名管道实例.pdf”中,我们可以通过两个示例程序来理解命名管道的工作原理。 首先,我们来看写操作程序。这个程序主要负责向命名管道写入数据。在程序中,定义了一个常量`FIFO_...
Linux进程间通信发展历程包括早期UNIX进程间通信、基于System V进程间通信、基于Socket进程间通信和POSIX进程间通信。 目前Linux使用的进程间通信方式包括管道、消息队列、共享内存、信号量和信号等。 管道通信是...
总结起来,这个实例深入浅出地展示了Linux进程间通信的实践应用,特别是如何通过命名管道实现数据采集和上传的同步,这对于理解和掌握Linux IPC机制以及在实际项目中应用这些技术具有重要的指导价值。
标签中的"fifo_lin fifo_linux linux_fifo 进程间通信"进一步强调了这是关于Linux平台下的FIFO实现,涵盖了FIFO在Linux环境中的应用和进程间通信的基本概念。 通过研究这个压缩包内的源代码,开发者可以学习到如何...
### Linux 进程通信——消息队列详解 随着信息技术的发展,特别是九十年代以来,越来越多的数据处理系统采用了开放系统的架构,比如客户机/服务器模式。在这种模式下,客户端发起服务请求,服务器端响应并处理请求...
### LINUX进程间通信:PIPE与FIFO #### 概述 在Linux系统中,进程间的通信(IPC)是一项重要的功能,使得不同的进程能够共享或交换数据。本文将深入探讨两种基本且广泛使用的IPC机制——**PIPE**(管道)与**FIFO*...
进程通信是计算机科学中操作系统领域的一个重要概念,它允许不同进程之间共享数据和资源,以实现协同工作。邮槽(Message Queue)是一种典型的进程间通信(IPC,Inter-Process Communication)机制,尤其在多任务...
本示例“Linux 进程间通信”着重演示了System V IPC机制,包括信号量(Semaphore, sem)、共享内存(Shared Memory, shm)和管道(FIFO)三种方式。这些技术广泛应用于构建复杂、高效的系统和服务,尤其是在需要不同...
【进程间通信】是操作系统中进程协作和交互的重要机制,主要分为无名管道(Pipe)和有名管道(FIFO)两种类型。本章讲解了这两类管道的原理和使用方法,以及信号(Signal)的处理机制。 **无名管道(Pipe)**是一种半双工的...
Linux的进程通信机制源自UNIX,融合了AT&T的System V IPC和BSD的套接字机制。UNIX IPC主要包括管道、FIFO和信号,System V IPC涉及消息队列、信号量和共享内存,而Posix IPC对应Posix消息队列、信号量和共享内存。...
这些代码实例是深入理解和掌握Linux进程通信的关键,对于提升你的Linux编程技能和解决实际问题的能力大有裨益。通过实践,你将能够灵活地运用这些通信机制,编写出高效、可靠的多进程应用程序。
提供的两份文档《7.0_Linux进程间通讯_上.pdf》和《7.1_Linux进程间通讯_下.pdf》将详细阐述上述各种通信机制,并可能包含实例代码和实践指导,对于深入理解和掌握Linux进程间通信非常有帮助。 总结,Linux进程间...
本文将深入解析Linux进程间通信机制,通过源代码分析和流程图来帮助理解各种IPC方法。 首先,我们要理解进程的概念。在Linux系统中,进程是程序的一次执行实例,每个进程都有自己的内存空间,相互独立。为了实现...