linux下的进程通讯

一. 实验内容

1.编写一个程序,实现在两个进程之间运用管道进行通讯。程序中创建一个子进程,然后父、子进程各自独立运行。父进程不断地在标准输入设备上读入小写字母,写入管道。子进程不断地从管道中读取字符,转换为大写字母后输出到标准输出设备上。当读到x时,结束。

2.  观察程序输出的结果,并做出合理的解释。

相关的系统调用或函数:fork()  pipe()  write()   read();

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<unistd.h>

#include<sys/types.h>

int main(void)

{

  int result=-1;

  int fd[2];

  int nbytes;

  pid_t pid;

  char string[100];

  char readbuffer[1000];

  int *read_fd=&fd[0];

  int *write_fd=&fd[1];

  //建立管道

  result=pipe(fd);

  if(-1==result)

  {

    printf("fail to create pipe\n");

    return -1;

  }

  pid=fork();

  if(-1==pid)

  {

    printf("fail to fork\n");

    return -1;

  }

  if(0==pid)   //子进程

  {int i=0;

    close(*read_fd);

scanf("%c",&string[0]);

while(string[i]!='x')

    {

i++;

scanf("%c",&string[i]);

       }

result=write(*write_fd,string ,strlen(string));

    return 0;

  }

  else{        //父进程

    close(*write_fd);

    nbytes=read(*read_fd,readbuffer,sizeof(readbuffer));

printf("the parent receive data:");

for(int i=0;readbuffer[i]!='x';i++)

{

readbuffer[i]=readbuffer[i]+'A'-'a';

printf("%c ",readbuffer[i]);

}

   

  }

  return 0;

 

}

1.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/28633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

充电宝什么牌子耐用?2024年四大品牌推荐!这四款值得入!

在现代生活中&#xff0c;充电宝已经成为我们日常必备的数码配件之一。无论是旅行、出差还是日常通勤&#xff0c;拥有一款耐用且高效的充电宝&#xff0c;能够为我们的电子设备提供源源不断的电力支持。然而&#xff0c;市场上充电宝品牌众多&#xff0c;质量参差不齐&#xf…

深入理解 Java 中的 volatile 关键字

暮色四合&#xff0c;晚风轻拂&#xff0c;湖面上泛起点点波光&#xff0c;宛如撒下了一片星河。 文章目录 前言一、CPU 三级缓存二、JMM三、并发编程正确性的基础四、volatile 关键字五、volatile 可见性六、volatile 有序性6.1 指令重排序6.2 volatile 禁止指令重排6.3 vola…

如何区分人工智能生成的图像与真实照片(下)

4 功能上的不合理性 AI 生成的图像往往会因为缺乏对现实世界物体结构和相互作用的了解&#xff0c;而产生各种功能不合理之处。这些不合理之处主要表现在以下几个方面&#xff1a; 4.1 构图不合理 物体关系不合逻辑: AI 生成的图像中&#xff0c;物体和人物之间的关系可能不符…

python3GUI--记账助手By:PyQt5(附下载地址)

文章目录 一&#xff0e;前言二&#xff0e;开发环境三&#xff0e;预览1.登录&注册2.主界面3.新增账单1.当前日期2.选择日期3.添加成功 4.删除账单4.筛选账单5.账单数据汇总1.日账单2.月账单3.年账单 四&#xff0e;设计心得1.项目代码结构2.UI设计概览3.UI设计详细1.登录…

人员的社保缴纳情况直接影响设计资质的延续结果。

是的&#xff0c;人员的社保缴纳情况会直接影响设计资质的延续结果。社保缴纳情况是评估企业运营稳定性和合规性的重要指标之一&#xff0c;特别是在设计资质延续的审核过程中。 设计资质延续时&#xff0c;相关部门会要求企业提供涉及资质延续所需人员的社保缴纳证明&#xff…

kettle学习(利用jsonPath定位,json文件转换)

kettle学习&#xff08;利用jsonPath定位&#xff0c;json文件转换&#xff09; 于数据处理的广袤天地间&#xff0c;我们时常需应对各类繁杂状况与各式格式。Kettle 作为极具威力的数据集成利器&#xff0c;赋予了我们诸多功能与无限可能此次博客里&#xff0c;我们将重点投向…

如何在电磁仿真软件CST中获得多天线同频的SAR

上期介绍了多天线不同频率情况下如何计算SAR&#xff0c;不用考虑相位差&#xff1b;这期我们看看MIMO&#xff0c;多天线同频&#xff0c;考虑相位差&#xff1a; 简单模型&#xff0c;一只手和两个天线&#xff1a; 工作频率2GHz&#xff1a; 仿真结束查看S11&#xff1a; 查…

KEPServerEX远程配置功能一键Get

远程配置功能&#xff0c;其实是通过KEPServerEX REST 接口及 HTTP 协议命令&#xff0c;对 KEPServerEX Runtime 运行环境进行配置的查询及更改。 右键点击系统托盘处的KEPServerEX Administration 图标&#xff0c;选择Settings | Configuration API Service; 如图设置&…

Windows WPS ppt幻灯片 保存文件时候 PPT文件大小变大 ppt文件太大 解决方案

Windows WPS ppt 幻灯片 保存文件时候 PPT文件大小突然变大&#xff0c;原先只有10M的大小增加到40M 关于wps的ppt文件变大&#xff0c;指的是&#xff1a;明明ppt幻灯片页数和图片都不多&#xff0c;只是稍微修改两个文字&#xff0c;保存时&#xff0c;文件大小增加了不少&a…

android studio CreateProcess error=2, 系统找不到指定的文件

【问题记录篇】 在AndroidStudio编译开发jni相关工程代码的时候&#xff0c;编译遇到的这个报错&#xff1a; CreateProcess error2, 系统找不到指定的文件。排查处理步骤: 先查看Build Output的具体日志输出 2.了解到问题出在了NDK配置上&#xff0c;此时需要根据自己的gra…

模型算法—线性回归

线性回归是统计学中最常见的一种回归分析方法&#xff0c;用于建立自变量&#xff08;解释变量&#xff09;和因变量&#xff08;响应变量&#xff09;之间的线性关系。线性回归模型可以用来预测一个或多个自变量对应的因变量的值。 线性回归的基本形式如下&#xff1a; &…

【ElasticSearch】ElasticSearch基本概念

ES 是一个开源的高扩展的分布式全文检索引擎&#xff0c;它是对开源库 Luence 的封装&#xff0c;提供 REST API 接口 MySQL 更适合数据的存储和关系管理&#xff0c;即 CRUD&#xff1b;而 ES 更适合做海量数据的检索和分析&#xff0c;它可以秒级地从数据库中检索出我们感兴…

SSH概念、用途、详细使用方法

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

Excel中多条件判断公式怎么写?

在Excel里&#xff0c;这种情况下的公式怎么写呢&#xff1f; 本题有两个判断条件&#xff0c;按照题设&#xff0c;用IF函数就可以了&#xff0c;这样查看公式时逻辑比较直观&#xff1a; IF(A2>80%, 4, IF(A2>30%, 8*(A2-30%),0)) 用IF函数写公式&#xff0c;特别是当…

【Java】已解决java.lang.ArrayIndexOutOfBoundsException异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.ArrayIndexOutOfBoundsException异常 一、问题背景 java.lang.ArrayIndexOutOfBoundsException 是 Java 中一个非常常见的运行时异常&#xff0c;它表明程序试图访问数…

C语言入门系列:流程控制

一&#xff0c;C代码执行顺序 默认情况下&#xff0c;C语言程序从main()函数开始执行&#xff0c;随后按源代码中语句出现的顺序逐一执行。 这意味着&#xff0c;如果不考虑任何控制结构&#xff0c;程序会自上而下&#xff0c;逐行执行每条语句&#xff0c;直到遇到函数调用…

LabVIEW电源适应能力检测系统

随着工业自动化程度的提高&#xff0c;电源质量直接影响设备的稳定运行。利用LabVIEW开发一个单相电源适应能力检测系统&#xff0c;该系统通过智能化和自动化测试&#xff0c;提高了测试效率&#xff0c;减少了人为错误&#xff0c;保证了电源质量的可靠性。 项目背景 在现代…

Nuxt3 实战 (九):使用 Supabase 实现 Github 认证鉴权

前言 Supabase 使用的是 postgresql 的 Row Level Security (RLS)&#xff0c;可以限制不同用户对同一张表的不同数据行的访问权限。这种安全机制可以确保只有授权用户才能访问其所需要的数据行&#xff0c;保护敏感数据免受未授权的访问和操作。 Auth Providers 打开 Supab…

29.添加录入注入信息界面

上一个内容&#xff1a;28.启动与暂停程序 以 28.启动与暂停程序 它的代码为基础进行修改 效果图&#xff1a; 新建Dialog 给新建的dialog添加空间&#xff0c;如下图 给每个输入框创建一个变量 代码&#xff1a; void CWndAddGame::OnBnClickedButton1() {static TCHAR BASE…

035.搜索插入位置

题意 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 难度 简单 示例 输入: nums [1,3,5,6], target 5 输出: …