有名管道的实现

有名管道实现全双工 有名管道本来是半双工,但可以实现全双工。两个.c文件实现了qq的基本通信,可以做到互相发送信息且不会乱序。 阅读详情

有名管道有文件名,存在于文件系统中。在同一个系统中,数据可以在任意的进程间通信。

写入端代码:

#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

#define FIFO "/tmp/fifo" //tmp目录下的fifo文件

int main()
{
    if(access(FIFO,F_OK))
    {
        int ret=mkfifo(FIFO,0777);
        if(ret == -1)
        {
            printf("Create FIFO failed!\n");
            return -1;
        }
    }

    int fd=open(FIFO,O_RDWR|O_TRUNC);    //可读可写,存在数据则清空
    if(fd==-1)
    {
        printf("open failed\n");
        return -1;
    }

    write(fd,"hello c++ codding!",19);
    write(fd,"linux",6);
    
    close(fd);

    return 0;

}

读端代码:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define MY_FIFO "/tmp/myfifo"

int main()
{
    char buffer[30]={0}; //定义缓冲区接收数据

    int ret=mkfifo(FIFO,0777);
    if(ret==-1)
    {
        printf("Create FIFO failed\n");
        return -1;
    }

    int fd=open(FIFO,O_RDWR);
    if(fd==-1)
    {
        printf("Open failed!\n");
        return -1;
    }

    int i,j;
    int len=lseek(fd,0,SEEK_END);  //获取文件字节大小
    printf("len is:%d\n".len);
    lseek(fd,0,SEEK_SET);    //记得把文件指针移回开头,否则待会读到的数据为空

    int ret=read(fd,buffer,30);

    for(i=0;i<len-1;++i)
    {
        if(buffer[i]=0)
        {
            for(j=i;j<len-1;j++)    //目的是为了消除数组元素中的\0字符,防止输出不全
            {
                buffer[j]=buffer[j+1];
            }
        }
    }

    printf("\n");
    printf("buffer is:%s\n",buffer);
    printf("ret is:%d\n",ret);
    
	close(fd);

	return 0;
}

输出:

通过有名管道实现文件复制(cp)功能 写两个程序,分别生成r 和w 进程可以将srcfile的内容复制到newfile中。 阅读详情

相关推荐

qt有名管道demo

qt有名管道demo,跨平台,linux,window平台同一套代码调试通过

linux有名管道qt嵌套,如何從C ++ / Qt Linux應用程序中逐行讀取FIFO /命名管道?

How do I read a FIFO/named pipe line by line from a C++/Qt Linux app?如何從C ++ / Qt Linux應用程序中逐行讀取FIFO /命名管道?Today I can open and read from a fifo from a Qt program, but I can't get the program to read ...

weixin_36352523的博客 214

QT进程多个管道通信,并与C#客户端同时多个通信

QT多个命名管道通信,并与C#客户端同时多个通信, 同时已有C#的客户端与服务器的通信,QT与QT的通信,QT与C#的通信,只要把管道名改为一至即可。

Qt 之进程间通信(IPC)

Qt 之进程间通信(IPC) 简述 通信目的 通信方式 Qt进程通信 TCP/IP Shared Memory D-Bus QProcess Session Management 更多参考 QT5软件开发入门到项目实战PDF(配完整示例代码)(持续更新) Qt实现IPC进程间通信-mqueue消息队列 QtDBus总结 原文链接:https://blog.youkuaiyun.com/liang19890820/article/details/50589285简述 进程间通信,就是在不同进程之间传播或交换信息。那么不同

thanklife的专栏 1697

基于IC动态加权的机器学习多因子选股策略:从模型融合到实战回测

在量化投资领域,多因子选股模型通过挖掘市场数据中的有效信号来预测股票收益。其核心原理在于利用统计学与机器学习算法,从海量因子中识别出与未来收益具有稳定相关性的特征。这一技术的核心价值在于将主观投资决策转化为系统化、可重复的客观过程,从而在控制风险的前提下追求超额收益。其典型应用场景包括股票阿尔法策略构建、Smart Beta产品设计以及资产配置中的股票筛选环节。本文聚焦于如何通过信息系数(IC)这一关键指标,动态融合Ridge回归、MLP神经网络和随机森林等多个预测模型,构建一个能够自适应市场风格轮动的选股

weixin_34216614的博客 451

别再只会用Excel了!Minitab 21手把手教你搞定SPC控制图(从数据导入到结果解读)

本文详细介绍了如何使用Minitab 21高效制作SPC控制图,从数据导入到结果解读的全流程。通过对比Excel的局限性,展示Minitab在自动化计算、图表标准化和特殊原因检验等方面的优势,帮助质量管理人员提升工作效率和数据分析专业性。

weixin_30878501的博客 382

qt 与 python 基于命名管道的进程间通信示例

文章目录qt 与 python 基于命名管道的进程间通信示例概述示例说明服务器端程序设计(Qt)工程配置文件mainwindow.hmainwindow.cpp客户端程序设计(Python) qt 与 python 基于命名管道的进程间通信示例 概述 “命名管道(Named Pipes)”是一种简单的进程间通信(IPC)机制,Microsoft Windows大都提供了对它的支持(但不包括Windows CE)。命名管道可在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单

falwat的专栏 2289

在 dell precision 7920 tower CentOS 8 Stream 上安裝nvidia驱动程序、Anaconda

简单记录一下如何在实验室dell precision 7920 tower CentOS 8 Stream上安装nvidia显卡驱动。

chen9046的博客 994

基于有名管道实现简单聊天功能

概述 任务:实现ChatA与ChatB之间的通信功能; 分析:匿名管道只能实现具有亲缘关系的进程之间的通信,为了实现两个无亲缘关系的进程间通信,需要使用有名管道技术。根据需求,需要建立两个管道,其中之一用于A写B读,另外一个相反。下面两种解决方案中,版本A在一个进程中(ChatA)循环写读数据,在另外一个进程(ChatB)中循环读写数据,可以实现ChatA和ChatB之间的通信,但存在的问题是:通信模式只能是ChatA发送给ChatB数据-ChatA接收ChatB数据-ChatA发送给ChatB数据…无法实

ccJun-的博客 1244

从零开始做题:big_zip

内容为:You_know_the_bed_feels_warmer_Sleeping_here_alone_You_know_I_dream_in_color_And_do_the_things_I_want_You_think_you_got_the_best_of_me_Think_you_had_the_last_laugh_Bet_you_think_that_everything_good_is_gone。查看压缩包内容,发现有五字节长度的文件,用crc碰撞攻击破解明文。

weixin_44626085的博客 1241

安时积分法和开路电压法结合估算锂电池SOC

基于安时积分法和开路电压法结合的锂电池SOC估计Simulink仿真建模,利用安时积分法计算放电过程中的SOC,在搁置状态利用开路电压法进行SOC修正。

qq_39304296的博客 2552

Linux有名管道学习——实现两个进程的简单聊天

为了克服匿名管道只能用于亲缘关系的进程间通信缺点,提出了有名管道(FIFO),也叫命名管道、FIFO文件一旦打开了FIFO,就能在它上面使用与操作匿名管道和其他文件的系统调用一样的I/O系统调用了(如read()、write()和close())。与管道一样,FIFO也有一个写入端和读取端,并且从管道中读取数据的顺序与写入的顺序是一样的。FIFO的名称也由此而来:先入先出。通过命令创建有名管道mkfifo 名字通过函数创建有名管道关于mkfifo函数pathnamemode0-1openreadread。

qq_51011672的博客 1522

在 ABAP 平台配置 OAuth 2.0 Client(OA2C_CONFIG):一份可落地的全景实践

本文详细介绍了在ABAP平台中配置OAuth 2.0客户端的完整流程。重点讲解了四种授权类型(Client Credentials、Authorization Code、SAML 2.0 Bearer Assertion、Resource Owner Password Credentials)的适用场景和配置要点,以及客户端认证的三种方式(Client Secret、Client Certificate、mTLS)。文章提供了操作步骤、排错建议和工程实践指导,包括端点配置、回调地址管理、scopes设置等关

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 354

有名管道实现聊天功能(一问一答)

有名管道实现聊天功能(一问一答)

qq_43762434的博客 364

2026软考中级-软件设计师笔记(送最新视频教程)

核心口诀:运控存输输(运算器、控制器、存储器、输入、输出)例题(2019年上半年):核心公式:数字签名流程:数字证书作用:死锁4个必要条件:死锁判断公式:处理策略:程序设计语言的四大核心成分:顺序表操作(时间复杂度):链表操作(时间复杂度):核心思想:频率高的字符用短编码,频率低的用长编码 → 最小化总编码长度构造步骤(贪心算法):前提:有序表(升序/降序) 步骤:时间复杂度:O(log₂n) 例:查找中核心思想:用哈希函数将关键字映射到存储位置 哈希冲突:不同关键字映射到同一位置 → 用链地址法或开放定址

36万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

用有名管道文件实现两个进程之间的通信

进程学习之利用有名管道进行两个进程之间的通讯

居合的博客 2248

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

linux中利用有名管道实现进程之间的通信

//把源文件中的数据读入到管道文件中 #include #include #include #include #include #include int do_copy(int fd_s,int fd_d) {    char buf[1024] = {0};    int ret = 0;    while((ret = read(fd_s,bu

yinbucheng的博客 2208

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

linux中有名管道与匿名管道的实现

一、匿名管道 多用于父进程与子进程之间的通信,用到的频率很高,挺重要的。定义一个大小为2的数组、使用pipe函数将其变为匿名管道的两端,fd[0]:代表读端、fd[1]:代表写端。子进程和父进程根据功能分别关闭读或写端。当然是使用read和write函数来对管道的数据进行读写,下面这个函数的功能就是父进程给子进程传输hello world,子进程读后把字符串发送到标准输出上。如下图可以看到结果是正确的。使用完都关掉、养成好习惯。 int pipe(int filedes[2]); ..

weixin_46199479的博客 833

有名管道实现简单版聊天

在chatA和chatB中,读和写管道不放在同一个进程中。因为放在同一个进程中,必定有一个是阻塞的,也就是说你不能在写的同时读数据,也不能在读数据的同时写数据。因此创建一个子进程,父子进行分别实现读和写。,比如B在发送 i am b之后再发送数据A是收不到的。原因是,B是在不停地读和写,那么B写完之后,下一次是该读了,但是A并没有发送过来数据,所以。同理B可以不断发送,A可以不断接收。开始写入数据,注意,这个程序只能。这样的话,就可以实现收发多次了。A进程代码:chatA.c。B进程代码:chatB.c。

鹏鱼彦的博客 547

2.16有名管道实现简单版聊天功能

先略过

m0_38062470的博客 263

利用两个有名管道实现类似聊天功能

管道的使用类似于创建一个文件,我们可以使用mkfifo()函数创建一个有名管道。 函数mkfifo() 所需头文件:#include #include 函数原型:int mkfifo(const char *pathname, mode_t mode) 函数参数: pathname 要创建的有名管道的路径名与文件名 mode 创建的有名管道的文件权限码,通常

wantingfy的博客 1288

有名管道——利用有名管道实现单向进程聊天

利用有名管道实现单向进程聊天

weixin_71997397的博客 138

C语言有名管道实现简单聊天

程序1: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <string.h> int main() { // 使用两条有名管道,实现简单的聊天功能 // 进程1 // 以只写方式打

ma_de_hao_mei_le的博客 774
上一篇: 无名(匿名)管道实现
下一篇: 玩一下linux下的消息队列
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值