位置: 编程技术 - 正文
推荐整理分享Linux管道通信C语言编程示例(linux 管道实现),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:linux 管道实现,linux中管道的用法,linux管道的实现原理,linux中管道的作用,linux管道的实现原理,linux管道编程,linux c管道,linux管道编程,内容如对您有帮助,希望把文章链接给更多的朋友!
一、定义
管道是单向的、先进先出的。它将一个程序的输入和另一个程序的输出连接起来。数据被一个进程读出后,将被从管道中删除。分为无名和有名管道两种。前者用于父进程和子进程间的通信,后者用于同一系统的两个进程间通信。 二、无名管道
复制代码代码如下: int pipe(int fd[2]); 其中,fd[0]用于读管道,fd[1]用于写管道。若成功则返回零,否则返回-1,错误原因存于errno中。
三、有名管道:FIFO
复制代码代码如下: int mkfifo(const char* pathname,mode_t mode)open时使用O_NONBLOCK,访问要求无法满足则立即出错返回。erron是ENXIO。 例子:复制代码代码如下:fread.c //读文件</p><p>#include<errno.h>#include<memory.h>#define FIFO "myfifo" main(){ int fd; char buff[]; if(access(FIFO,F_OK) == -1){ mkfifo(FIFO,); } fd=open(FIFO,O_RDONLY|O_NONBLOCK); //设置非阻塞打开,否则当没有输入时,会阻塞在read函数 </p><p> int num; while(1){ memset(buff,'',); //如不清空最后的字符会出现乱码 if((num=read(fd,buff,))==0){ printf("waiting.....n"); sleep(1); continue; } printf("read %d in fifo , it's %s",num,buff); sleep(1); }}</p><p>fwrite.c //写文件</p><p> </p><p>#include<stdio.h>#include<fcntl.h>#include<memory.h>#define FIFO "myfifo"main(){ int fd; char buff[]; memset(buff,'',); scanf("%s",buff); if(access(FIFO,F_OK) == -1){ mkfifo(FIFO,); } fd=open(FIFO,O_WRONLY); int num; num=write(fd,buff,strlen(buff)); printf("%d char is written! It's %sn",num,buff);}4、管道关闭:用close()关闭相应的文件描述符即可。
Linux共享内存编程示例 一、概念共享内存是被多个进程共享的一部分物理内存,是进程间共享数据的最快的一种方法。二、实现分为两个步骤:1、创建共享内存。2、映射共享
Linux 多线程编程实例 一、多线程VS多进程和进程相比,线程有很多优势。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护代码段和
Linux消息队列编程示例 一、概念消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向中按照一定
标签: linux 管道实现
本文链接地址:https://www.jiuchutong.com/biancheng/364794.html 转载请保留说明!上一篇:Linux补丁工具patch生成使用补丁用法示例(linux补丁工具)
下一篇:Linux共享内存编程示例(linux共享内存同步机制)
友情链接: 武汉网站建设