IO文件进程线程 5.8练习

进程与线程详解 本文章是对线程进程的一些总结,同时对多线程也有一个初步的认识,欢迎大家前来一起学习。 阅读详情
1.使用 dup2 实现错误日志功能
                使用 write 和 read 实现文件的拷贝功能,注意,代码中所有函数后面,紧跟perror输出错误信息,要求这些错误信息重定向到错误日志 err.txt 中去
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
	int std_out = dup(2);
	int fd3 = open("./err.txt",O_RDONLY | O_WRONLY |O_CREAT | O_TRUNC,0666);
	perror("open3");
	dup2(fd3,2);
	
	int fd1 = open("./copy.bmp",O_RDONLY);
	perror("open1");

	int fd2 = open("./tar.bmp",O_WRONLY|O_CREAT|O_TRUNC,0666);
	perror("open2");

	int retval = 0;
	char buff[128]={0};

	while(1){
		retval = read(fd1,buff,sizeof(buff));
		perror("read");
		if(retval == 0){break;}
		write(fd2,buff,retval);
		perror("write");

	}
	dup2(std_out,2);
	close(fd1);
	close(fd2);
	close(fd3);
	return 0;
}

2.判断一个文件是否拥有用户可写权限,如果拥有,则去除用户可写权限,如果不拥有,则加上用户可写权限
                权限更改函数:就是chmod函数,自己去man一下
                要求每一次权限更改成功之后,立刻在终端显示当前文件的权限信息 :使用 ls -l显示(使用 system函数配合shell指令 ls -l 来实现)
    
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
	struct stat buf = {0}; //定义buf用来接受文件权限等信息
	lstat("./autho.txt",&buf); //获取文件属性,并保存到buf里面去
	mode_t mode = buf.st_mode;

	if ((mode | S_IRUSR) == mode){
		printf("./autho.txt文件拥有用户可写权限,已移除\n");
		chmod("./autho.txt",mode &(~S_IRUSR));
		system("ls -l ./autho.txt");
	}else
	{
		printf("./autho.txt文件没有用户可写权限,已添加\n");
		chmod("./autho.txt",mode | S_IRUSR);
		system("ls -l ./autho.txt");
	}

	return 0;
}

Python并行编程详解:多线程、多进程与异步IO Python提供了多种并行编程的方式,包括多线程、多进程和异步IO。GIL的存在使得Python的多线程在CPU密集型任务中无法充分利用多核CPU,但在IO密集型任务中仍然有效。进程间通信:多进程编程需要使用队列(Queue)、管道(Pipe)等机制进行进程间通信。在实际开发中,根据任务类型和需求选择合适的并行编程方式,可以显著提高程序的性能。异步编程的复杂性:异步IO编程需要理解事件循环和协程,代码复杂度较高。异步IO:适合高并发的IO密集型任务,性能优越。多进程:适合CPU密集型任务,不受GIL限制。 阅读详情

相关推荐

文件IO、进程、线程及通信方式

标准文件IO存在缓存区,而系统文件IO没有缓存区。缓存区->减少了文件的访问次数,减少了系统的开销。

weixin_75169083的博客 253

Linux的IO和进程、线程

介绍常见IO,进程与线程通信

潮与虎 2503

达梦DM8单进程多线程架构模式下各线程详解

达梦DM8单进程多线程架构模式下各线程详解

weixin_42018955的博客 3427

linux文件IO操作,进程及线程

32 int semctl(int,int, int,union semun),参数分别是id,信号量编号, 命令(IPC_STAT获取信号量的属性,IPC_SET设置信号量的属性,IPC_RMID 删除,SETVAL设置信号量的值),联合体union semun{int val设置值用到;19 shmat()函数用来映射共享内存内核到应用地址,参数分别是共享内存的返回 值(shmget()的返回值),映射到的地址(NULL系统自动映射),权限(0表示 可读可写);

m0_65032022的博客 582

西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践

本文详细解析了西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践。通过实际案例和代码示例,介绍了状态机的基础认知、硬件配置、逻辑开发、调试技巧以及与MES系统集成的高级应用,帮助工程师高效实现设备自动化控制。

weixin_29255731的博客 531

CXL协议-第三章 CXL事务层

CXL.io为I/O设备提供了一个非一致的负载/存储接口。图3-1显示了Flex总线分层层次结构中的位置。事务类型、事务分组格式、基于信用的流量控制、虚拟通道管理和事务排序规则遵循PCIe*定义,详情请参考PCIe基础规范的“事务层规范”章节。本章重点介绍了用于CXL.io的著名的PCIe操作模式或特性。

qq_41305217的博客 2769

IO进程线程

流指针FILE*: 本质FILE是一个结构体的别名,当存储./a.out的运行结果,需要创建一个文件,每常见一个文件则会在用户空间申请一片缓冲区。IO的作用:实现对文件的操作,把运行结果存到文件中,读取文件的数据,方便后期查询。4.属于系统函数调用,可以访问特殊文件(链接文件,设备文件,管道文件...)标准IO:指程序和用户之间的数据交互,标准IO=文件IO+缓冲区。练习题:使用标准IO函数,打印一个文件的内容,类似cat指令。日志:把内存的运行结果存到到文件,文件的操作:打开,关闭,读取,写入。

WYF_111501的博客 1221

libcrypto.so.10(OPENSSL_1.0.2)(64bit) is needed by erlang-22.0.7-1.el7.x86_64

今天安装Rabbitmq的 erlang-22.0.7-1.el7.x86_64.rpmrpm包时遇到了这个坑,害找到说是不容易;错误信息在下面; [root@iz2zef7u84js1qeeq00ewwz RabbitMQ]# rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm warning: erlang-22.0.7-1.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 6026dfca: NOKEY error:

qq_45782349的博客 5782

IO,进程线程面试题

1.标准IO和文件IO的区别 2.静态库和动态库的区别 3.怎么创建进程 4.什么是守护进程 5.什么是僵尸进程?什么是孤儿进程? 6.时间片了解么? 7.进程和线程区别? 8.线程的同步怎么实现 9.线程的互斥怎么实现 10.进程间通信方式有哪些?哪种效率最高 11.通信方式的优缺点对比 12.有名管道和无名管道的区别? 13.共享内存的实现方式 14.消息队列的实现方式 15.fork和vfork区别 16.线程的死锁,怎么避免?

sjrhsk_hahaha的博客 1191

MATLAB新手必看:Stewart平台运动学逆解从入门到实战(附完整代码)

本文详细介绍了如何使用MATLAB实现Stewart平台的运动学逆解,从基础原理到完整代码实现,涵盖并联机器人的数学建模、MATLAB编程和Simulink集成。通过实战案例和可视化分析,帮助新手快速掌握Stewart平台的运动学逆解技术,适用于机器人学和控制理论领域的研究与应用。

dream的博客 551

VS2022下C# WPF项目一键打包成独立exe的完整指南

本文提供了一份在Visual Studio 2022中将C# WPF项目一键打包成独立可执行exe文件的完整指南。通过配置项目属性、启用单文件发布和自包含模式,开发者无需依赖第三方工具,即可生成可在未安装.NET运行时的电脑上直接运行的独立程序,极大简化了桌面应用的分发流程。

weixin_28831399的博客 670

总结:IO进程

总结

QR70892的博客 1227

Revit实战:从零到一,手把手教你用族(Family)搭建一个完整的水闸BIM模型

本文详细介绍了如何使用Revit的族(Family)功能从零开始构建一个完整的水闸BIM模型。通过参数化族设计,实现闸门开度调整自动关联流量计算等智能化功能,提升水利工程BIM模型的工程价值和应用效率。文章涵盖族库规划、核心构件创建、高级技巧及BIM数据深度应用,为水利工程数字化提供实用指南。

weixin_28738165的博客 263

8.1IO进程线程

程序员写程序时,一个程序可能由多个任务组成,如果使用的是单进程,或单任务,那么该任务执行阻塞时,其他任务就无法执行,必须等到该任务解除阻塞后,才能去执行其他任务。多进程或多线程,可以解决同一个程序中多个任务并发执行的情况1.2进程的概念1>进程是程序的一次执行过程2>进程是程序资源分配的基本单位,系统会分给每个进程分配4G的虚拟内存,分为0--3G的用户空间和3--4G的内核空间多个进程共享内核空间,用户空间相互独立。

2301_81236242的博客 1325

一文看懂分布式存储架构

目录一、集中存储结构二、分布式存储1 、分布式存储的兴起2 、分布式存储的重要性3 、分布式存储的种类和比较三、分布式理论浅析1 、一致性和可用性2 、数据分布3 、复制4 、分布式协议5、跨机房部署四、分布式文件系统1、 Google 文件系统( GFS )2、 Taobao 文件系统( TFS )3、 Fackbook Haystack 文件系统4、 CDN 内容分发网络五、分布式键值系统1、 Amazon Dynamo2、 Taobao Tiar3、 ETCD4 、产品选型比较( Etcd , Zoo

weixin_70730532的博客 2万+

【实战】基于 Inner-IoU 的 YOLOv8 优化指南:显著提升检测精度

Inner-IoU 凭借辅助边框的创新设计,成功解决了传统 IoU 损失在小目标、遮挡场景下的收敛难题,为 YOLOv8 注入了更强的定位能力。从原理剖析到代码集成,本教程已为你铺就了一条“精度提升”的实战路径。现在,不妨亲自上手尝试,让你的目标检测模型在各类数据集上都能交出一份“精度优异”的答卷——相信我,当你看到检测框精准贴合目标的那一刻,你会明白这份尝试的价值。

m0_64661770的博客 107

8.5IO进程线程

1> 对于多个线程之间通信,我们可以使用临界资源来完成,通过一个线程任务对临界资源进行修改,另一个线程也可以使用已经修改过的临界资源,但是要注意使用同步互斥机制完成对临界资源的保护2> 多个进程之间不能使用全局变量来进行进程间通信,多个进程之间的用户空间是相互独立的,每个进程的全局变量是各个进程独立拥有的,更改一个进程的全局变量,另一个进程不会受到影响,故而不能使用全局变量来完成通信。

2301_81236242的博客 1474

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IO进程线程(线程)

线程:是进程并发执行多个任务(线程)的机制,同进程下的多个线程共用同一进程资源。1. 创建一个分支线程,在主线程中拷贝文件的前一部分,分支线程拷贝文件的后一部分。并发:多个任务在单核CPU上,以时间片轮机制执行。1. 进程之间用户空间独立,内核资源共享,,线程共享进程的资源。2. 进程是资源分配日的最小单位,线程是任务执行的最小单位。进程:是由一个或多个线程组成的。3. 多进程之间需要引入进程间。6. 进程的稳定性比线程强。3. 解读代码(输出8次)4. 进程的资源比线程多。5. 线程的效率比进程高。

weixin_65849806的博客 1166

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

性能相关的IO请求(线程、进程)

转载地址:http://www.cnblogs.com/wupeiqi/articles/6229292.html 一、在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢。 1、同步执行 import requests def fetch_async(url): response = requests.get...

书海拾贝专栏 2287

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IO进程线程4

创建态:流程 首先向系统申请一个空白PCB资源,在PCB中填写管理或和控制进程的相关信息 申请进程相关的资源,插入到就绪队列中等CPU调度 就绪态:获取出cpu以外的所有资源 运行态:获取cpu资源,实现CPU调度 阻塞态:在运行的构成中遇到IO函数 终止态:流程 等待系统做稍后处理,清空PCB资源,把PCB返回给系统。pgid:process group id 进程组号,一个进程组是由多个进程组成,当创建一个新的进程,默认继承父进程的进程组号。CPU以ms级别的速度在多个进程或线程之间来回切换。

WYF_111501的博客 1133

Python 并发简介(多线程、多进程)

b站学习视频笔记

qingguideng的博客 1万+

IO进程重点知识

什么是标准IO?什么是文件IO?/标准IO和文件IO的区别/描述缓存区以及刷新缓存的条件/open 函数用法,功能参数返回值/实现cat功能核心代码 / 实现wc -l功能核心代码/ 实现cp功能核心代码/静态库和动态库的区别 /进程的特点/描述进程三态图/什么是阻塞和非阻塞?(意思对就行)/fork 函数的用法,功能参数返回值/ 什么是孤儿进程? 什么是僵尸进程?/怎么回收子进程资源,用什么函数,怎么用/退出进程函数,什么区别?/什么是守护进程/怎么创建守护进程?/进程和线程区别/程序什么时候该使用线程?

weixin_63791423的博客 1124

【目标检测】YOLOv5多进程/多线程推理加速实验

一个小小的实验记录

兴趣使然的创作者 1万+

【python】python进程、线程、协程和什么时候使用

说明 进程:是操作系统进行资源分配的最小单元,资源包括CPU、内存、磁盘等IO设备等等 线程:是CPU调度的基本单位。 进程:系统分配资源的载体,是程序运行的实例; 线程:程序执行的最小单元,是进程中的一个实体用来执行程序,一个进程中有多个线程。 为什么有人说 Python 多线程是鸡肋? 在我们常识中,多进程、多线程都是通过并发的方式充分利用硬件资源提高程序的运行效率,怎...

我的笔记本 9000

IO进程常见问题小结

守护进程是后台进程;生命周期比较长,从系统启动时开启,系统关闭时结束;它是脱离控制终端且周期执行的进程。1)子进程几乎拷贝了父进程的全部内容。包括代码、数据、系统数据段中的pc值、栈中的数据、父进程中打开的文件等;但它们的PID、PPID是不同的。2)父子进程有独立的地址空间,互不影响;当在相应的进程中改变全局变量、静态变量,都互不影响。3)若父进程先结束,子进程成为孤儿进程,被init进程收养,子进程变成后台进程。4)若子进程先结束,父进程如果没有及时回收,子进程变成僵尸进程(要避免僵尸进程产生)

Io_oI_zzz的博客 876

线程和进程

这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。当有某个任务完成的时候,会yield这个任务,就能执行for循环下面的语句,然后继续阻塞住,循环到所有任务结束,同时,先完成的任务会先返回给主线程。

qq_45726327的博客 1211
上一篇: IO进程线程 5.7
下一篇: IO 父子进程计算长方形面积 5.9(未完待续)
风铃响了
博客等级 码龄4年 76粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值