华清作业day53

news/2024/12/19 6:59:13/

1.c代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
struct msgbuf{long int type;char data[128];
};
#define SIZE sizeof(struct msgbuf)-sizeof(long int)
int main(int argc, const char *argv[])
{char buf[128];key_t key = ftok("/", 'g');if(-1 == key){printf("fork error\n");return -1;}int msqid = msgget(key, IPC_CREAT|0664);if(msqid == -1){printf("mssget error\n");return -1;}pid_t pid = fork();if(pid < 0){printf("fork error\n");return -1;}else if(pid == 0)//子进程{struct msgbuf msg = {.type = 2};while(1){bzero(msg.data, sizeof(msg.data));fgets(msg.data, sizeof(msg.data), stdin);msg.data[strlen(msg.data) - 1] = '\0';if(msgsnd(msqid, &msg, SIZE, 0) == -1){printf("msgsnd error\n");return -1;}if(strcmp(msg.data, "quit") == 0){	break;}}exit(EXIT_SUCCESS);}else//父进程{struct msgbuf msg = {.type = 1};while(1){bzero(buf, sizeof(buf));if(msgrcv(msqid, &msg, SIZE, 1, 0) == -1){printf("msgrcv error\n");return -1;}printf("取出的消息为:%s\n", msg.data);if(strcmp(msg.data, "quit") == 0){	break;}}wait(NULL);}if(msgctl(msqid, IPC_RMID, NULL) == -1){printf("msgctl error\n");return -1;}return 0;
}

2.c代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
struct msgbuf{long int type;char data[128];
};
#define SIZE sizeof(struct msgbuf)-sizeof(long int)
int main(int argc, const char *argv[])
{char buf[128];key_t key = ftok("/", 'g');if(-1 == key){printf("fork error\n");return -1;}int msqid = msgget(key, IPC_CREAT|0664);if(msqid == -1){printf("mssget error\n");return -1;}pid_t pid = fork();if(pid < 0){printf("fork error\n");return -1;}else if(pid == 0)//子进程{struct msgbuf msg = {.type = 1};		while(1){bzero(msg.data, sizeof(msg.data));fgets(msg.data, sizeof(msg.data), stdin);msg.data[strlen(msg.data) - 1] = '\0';if(msgsnd(msqid, &msg, SIZE, 0) == -1){printf("msgsnd error\n");return -1;}if(strcmp(msg.data, "quit") == 0){	break;}}exit(EXIT_SUCCESS);}else//父进程{struct msgbuf msg = {.type = 2};while(1){bzero(buf, sizeof(buf));if(msgrcv(msqid, &msg, SIZE, 2, 0) == -1){printf("msgrcv error\n");return -1;}printf("取出的消息为:%s\n", msg.data);if(strcmp(msg.data, "quit") == 0){break;}}wait(NULL);}if(msgctl(msqid, IPC_RMID, NULL) == -1){printf("msgctl error\n");return -1;}return 0;
}

效果图:


http://www.ppmy.cn/news/1344256.html

相关文章

使用MATLAB驱动USRP-N320实现OFDM自收自发

文章目录 前言一、收发代码二、截取一帧 OFDM三、执行主函数四、运行结果五、资源自取 前言 本文作为实验结果记录及测试&#xff0c;方便后面回顾所做的工作。本文基于一台电脑和一台 USRP 设备实现了 OFDM 自发和自收功能 一、收发代码 ofdm_tx_rx_test.m 核心代码&#x…

ArrayList和LinkedList的区别是什么

ArrayList 和 LinkedList 分别代表了两类不同的数据结构&#xff1a;动态数组和链表。它们都实现了 Java 的 List 接口&#xff0c;但是有着各自独特的特点和性能表现。 1. 数据结构 ArrayList 是基于可调整大小的数组实现的。它允许快速随机访问&#xff0c;因为内部元素可通…

体悟PyTorch的优雅

——PyTorch 是所有的框架中面向对象设计的最优雅的一个。 —— PyTorch的设计最符合人们的思维。 编程是一门艺术&#xff0c;编程可以很优雅。研究可以很优雅&#xff0c;研发也可以很优雅。我们的人生可以很优雅&#xff01; 1. PyTorch 的优雅 PyTorch 的面向对象设计确实…

Mybatis中的sql-xml延迟加载机制

Mybatis中的sql-xml延迟加载机制 hi&#xff0c;我是阿昌&#xff0c;今天记录一下关于Mybatis中的sql-xml延迟加载机制 一、前言 首先mybatis技术本身就不多介绍&#xff0c;说延迟加载机制之前&#xff0c;那要先知道2个概念&#xff1a; 主查询对象关联对象 假设咱们现…

鸿蒙4.0.0 安装minitouch

鸿蒙4.0.0 安装minitouch ubuntu 系统 minitouch 地址 https://github.com/DeviceFarmer/minitouch 因为 鸿蒙4.0.0 对应安卓12 API版本31 所以启动 minitouch 需要 STFService 地址 https://github.com/openstf/STFService.apk 到release下载最新的STFService.apk &…

【DevOps】产品需求文档(PRD)与常见原型软件

文章目录 1、PRD介绍1.1、概述1.2、前提条件1.3、主要目的1.4、关键内容1.5、表述方式1.6、需求评审人员1.7、一般内容结构 2、需求流程3、常见原型软件3.1、Word3.2、Axure3.2.1、详细介绍3.2.2、应用分类3.2.3、优缺点 3.3、摹客RP3.4、蓝湖3.5、GUI Design Studio 1、PRD介绍…

[UI5 常用控件] 07.SplitApp,SplitContainer

文章目录 前言1. SplitApp1.1 组件结构1.2 Demo1.3 mode属性 2. SplitContainer 前言 本章节记录常用控件SplitApp&#xff0c;SplitContainer。主要功能是在左侧显示Master页面&#xff0c;右侧显示Detail页面。 Master页面和Detail页面可以由多个Page组成&#xff0c;并支持…

Flink CDC 与 Kafka 集成:State Snapshot 还是 Changelog?Kafka 还是 Upsert Kafka?

我们知道,尽管 Flink CDC 可以越过 Kafka,将关系型数据库中的数据表直接“映射”成数据湖上的一张表(例如 Hudi 等), 但从整体架构上考虑,维护一个 Kafka 集群作为数据接入的统一管道是非常必要的,这会带来很多收益。 在 Flink CDC 之前,以 Debezium + Kafka Connect …