当前位置: 首页 > article >正文

Linux编程(清华大学出版社2019年1月第1版)第7章-进程间通信-课后作业

  • 7.1
    在这里插入图片描述
    输出:
4:ABCD 
4:EFGH
  • 7.2
    在这里插入图片描述

输出:

numbers=3 
10 
20 
30 
  • 7.3
    在这里插入图片描述
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <limits.h>
#include <fcntl.h>
#include <sys/types.h>
#include <stdint.h>
#include <string.h>

#define BUFSIZ 1024

struct grade 
{
	char sno[20];
	char name[10];
	float chinese,math,english;
};

int main()
{
	int fds[2];
	if (pipe(fds) < 0)
	{
		fprintf(STDERR_FILENO,"pipe failure \n");
		exit(EXIT_FAILURE);
	}
	int pid = fork();
	if (pid == 0) 
	{
		close(fds[0]);
		write(fds[1],"1234567890",11);
		struct grade gra = {"001","nihao",60,60,60};
		write(fds[1],&gra,sizeof(struct grade));
		close(fds[1]);
	}
	else 
	{
		close(fds[1]);
		uint8_t buff[BUFSIZ];
		read(fds[0],buff,sizeof(buff));
		printf("read num: %s \n",buff);
		struct grade *gra = buff+strlen(buff)+1;
		printf("read grade{name:%s, sno:%s, chi:%.2f, math:%.2f, eng:%.2f} \n"
			,gra->name,gra->sno,gra->chinese,gra->math,gra->english);
		close(fds[0]);
	}
	exit(EXIT_SUCCESS);
}
  • 7.4

在这里插入图片描述

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int main() 
{
	printf("\n");
	int pipe_ids[2];
	pipe(pipe_ids);
	int pid0 = fork();
	if (pid0 == 0)
	{
		close(pipe_ids[0]);
		int save_stdout = dup(1); // save stdout
		close(1); // close stdout
		dup(pipe_ids[1]); // stdout -> pipe_ids[1]
		execlp("ps","ps","-aux",NULL);
		dup2(save_stdout,1); // restore stdout
		close(pipe_ids[1]);
		exit(EXIT_SUCCESS);
	}
	int pid1 = fork();
	if (pid1 == 0) 
	{
		close(pipe_ids[1]);
		int save_stdin = dup(0); // save stdin
		close(0); // close stdin
		dup(pipe_ids[0]); // stdin -> pipe_ids[0]
		execlp("grep","grep","init",NULL);
		dup2(save_stdin,0); // restore stdin
		close(pipe_ids[0]);
		exit(EXIT_SUCCESS);
	}
	close(pipe_ids[0]);
	close(pipe_ids[1]);
	return 0;
}


to be continue …


http://www.kler.cn/a/455284.html

相关文章:

  • 【JavaEE进阶】@RequestMapping注解
  • 双柱渐变图背景图
  • 攻防世界web新手第四题easyphp
  • 从百度云网盘下载数据到矩池云网盘或者服务器内
  • 《迁移学习与联邦学习:推动人工智能发展的关键力量》
  • 五分钟学会如何在GitHub上自动化部署个人博客(hugo框架 + stack主题)
  • 信息安全管理:信息系统开发与维护安全控制要点与管理策略
  • 链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 场景
  • 【minicom】Linux串口调试工具 - minicom的安装及使用
  • Temporary failure resolving ‘security.ubuntu.com‘
  • flask后端开发(8):Flask连接MySQL数据库+ORM增删改查
  • 【HarmonyOS】鸿蒙arrayBuffer和Uint8Array互相转化
  • python基础项目
  • 5G/4G工业边缘网关 边缘计算 硬核配置强算力
  • 使用three.js 实现vr全景图展示,复制即可用
  • C语言的语法
  • 集成 jacoco 插件,查看单元测试覆盖率
  • 【Agent】AutoGen Studio2.0开源框架-UI层环境安装+详细操作教程(从0到1带跑通智能体AutoGen Studio)
  • httpclient POST 工具方法
  • python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶
  • <代码随想录> 算法训练营-2024.12.27
  • Linux 硬盘扩容 分区 挂载
  • 蓝牙BLE开发——解决iOS设备获取MAC方式
  • FreePBX修改IP地址和端口以及添加SSL证书开启HTTPS访问
  • Ajax总结
  • HTMLCSS:超级酷炫的3D照片墙