1.3 day3 IO进程线程

news2024/9/23 0:39:32

使用标准IO进行文件拷贝

#include <myhead.h>
int main(int argc, const char *argv[])
{
	if(argc!=3)//外部传参
	{
		printf("input error\n");
	}
	//定义两个文件指针
	FILE *fp=NULL;
	FILE *cfp=NULL;
	if((fp=fopen(argv[1],"r"))==NULL)
	{
		perror("fopen error");
		return -1;
	}
	if((cfp=fopen(argv[2],"w"))==NULL)
	{
		perror("fopen error");
		return -1;
	}
	char buf[128]="";
	int res;
	//循环将读取到的数据写入另一个文件中
	while((res=fread(buf,sizeof(char),sizeof(buf),fp))!=0)
	{
		fwrite(buf,sizeof(char),res,cfp);
	}
	fclose(fp);
	fclose(cfp);
	return 0;
}

使用文件IO进行文件拷贝

#include <myhead.h>
int main(int argc, const char *argv[])
{
	if(argc!=3)//外部传参
	{
		printf("input error\n");
	}
	//定义两个文件描述符
	int fd=-1;
	int cfd=-1;
	if((fd=open(argv[1],O_RDONLY))==-1)
	{
		perror("open error");
		return -1;
	}
	if((cfd=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0664))==-1)
	{
		perror("open error");
		return -1;
	}
	char buf[128]="";
	int res;
	//将读到的数据循环写入另一个文件中
	while((res=read(fd,buf,sizeof(buf)))!=0)
	{
		write(cfd,buf,res);
	}
	close(fd);
	close(cfd);
	return 0;
}

使用sata函数实现  ls -l  指令

#include <myhead.h>
int main(int argc, const char *argv[])
{
	//定义文件属性类型的数据
	struct stat sb;//用于储存获取的文件属性
	stat(argv[1],&sb);//调用函数得到文件属性
	switch(sb.st_mode&S_IFMT)
	{
	case S_IFSOCK:
		{
			printf("这是套接字文件\n");
		}
		break;
	case S_IFLNK:
		{
			printf("这是链接文件\n");
		}
		break;
	case S_IFREG:
		{
			printf("这是普通文件\n");
		}
		break;
	case S_IFBLK:
		{
			printf("这是块设备文件\n");
		}
		break;
	case S_IFDIR:
		{
			printf("这是目录文件\n");
		}
		break;
	case S_IFCHR:
		{
			printf("这是字符设备文件\n");
		}
		break;
	case S_IFIFO:
		{
			printf("这是管道文件\n");
		}
		break;
	}
	printf("%#o\t%ld\t%ld\n",sb.st_mode&0777,sb.st_size,sb.st_ino);
	return 0;
}

使用opendir,closedir,readdir对目录操作

#include <myhead.h>
int main(int argc, const char *argv[])
{
	if(argc!=2);
	DIR *fd=NULL;
	if((fd=opendir(argv[1]))==NULL)
	{
		perror("opendir error");
		return -1;
	}
	//读取目录中的文件或目录的信息
	struct dirent *sfd;
	while((sfd=readdir(fd))!=NULL)
	{
		//输出当前文件或目录的信息
		printf("name:%10s\t inode:%10ld\t 结构体大小:%10d ,dype:%d\n",sfd->d_name,sfd->d_ino,sfd->d_reclen,sfd->d_type);
		//输出类型
		switch(sfd->d_type)
		{
			case DT_BLK:
				printf("b");
				break;
			case DT_CHR:
				printf("c");
				break;
			case DT_DIR:
				printf("d");
				break;
			case DT_FIFO:
				printf("p");
				break;
			case DT_LNK:
				printf("l");
				break;
			case DT_REG:
				printf("-");
				break;
			case DT_SOCK:
				printf("s");
				break;
		}

	}
	closedir(fd);
	return 0;
}

 

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

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

相关文章

在宝塔Linux中安装Docker

前言 帮助使用宝塔的用户快速上手docke的安装 &#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Docker》。&#x1f3af;&#x1f3af…

安装Unity详细教程(如何获取免费个人版许可证)

文章目录 下载Unity Hub安装Unity Hub登录获取免费个人版许可证安装Unity编辑器卸载Unity编辑器 下载Unity Hub 首先&#xff0c;我们需要到Unity的官网下载Unity Hub&#xff1a;Unity CN 我们可以在Unity Hub上管理我们的编辑器版本和项目文件。 安装Unity Hub 然后安装Un…

阿赵UE学习笔记——7、导入资源

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的使用。这次将会把一个带动作和贴图的钢铁侠模型&#xff0c;导入的UE的项目中。 1、准备的资源 这里有2个fbx文件&#xff0c;都是带着网格和动画的&#xff0c;模型网格和骨骼是一样的&#xff0c;只…

PRD文档参考

在我们当前的项目中&#xff0c;我们采取了模块化的划分方式。因此&#xff0c;PRD&#xff08;产品需求文档&#xff09;也是按照各个模块进行组织和编辑的。虽然各个模块在功能细节上可能有所差异&#xff0c;但整体风格还是保持了一致性。这种风格使得文档结构清晰&#xff…

2007-2022年上市公司数字化转型数据(区分年报和管理层讨论)(含原始数据+处理代码+结果)

2007-2022年上市公司数字化转型数据&#xff08;年报和管理层讨论&#xff09;&#xff08;含原始数据处理代码结果&#xff09; 1、时间&#xff1a;2007-2022年 2、指标&#xff1a;统计年度、证券代码、人工智能技术、区块链技术、云计算技术、大数据技术、数字技术应用、…

DRF从入门到精通七(djangorestframework-simplejwt、定制返回格式、多方式登录)

文章目录 一、djangorestframework-simplejwt快速使用1.基础使用步骤2.自己配置视图校验访问局部配置认证及权限类全局配置认证及权限类 3.关于双token认证问题 二、定制返回格式三、多方式登录 一、djangorestframework-simplejwt快速使用 JWT主要用于签发登录接口需要配合认证…

自定义View之理解测量onMeasure和布局onLayout过程

Android应用的用户界面中&#xff0c;我们经常需要自定义View以满足特定的设计需求。在自定义视图的过程中&#xff0c;理解视图的测量&#xff08;onMeasure&#xff09;和布局&#xff08;onLayout&#xff09;过程至关重要。本篇博客将用通俗的语言&#xff0c;为你解析这两…

MySQL是如何做到可以恢复到半个月内任意一秒的状态的?

MySQL的逻辑架构图 MySQL中两个重要的日志模块&#xff1a;redo log&#xff08;重做日志&#xff09;和binlog&#xff08;归档日志&#xff09; 我们先来看redo log&#xff1a; 介绍一个MySQL里经常说到的WAL技术&#xff0c;即Write-Ahead-Logging&#xff0c;它的关键点…

中国计算机学会推荐国际学术会议及时间(计算机体系结构/高性能计算/存储系统)

中国计算机学会推荐国际学术会议及时间 (计算机体系结构/高性能计算/存储系统) 参考资料 参考链接: call4papers

npm、pnpm和yarn 的区别

包管理工具是JavaScript开发中不可或缺的一部分&#xff0c;它们可以帮助我们方便地安装、更新、删除和管理项目所依赖的各种库和模块。 目前&#xff0c;最流行的包管理工具有npm、yarn和pnpm&#xff0c;它们各有各的特点和优劣势。 本文将试着对这三个工具进行全面的对比。…

新电脑究竟要不要登录微软账户?看这个就明白了

记得Windows11出来之后&#xff0c;新电脑预装的系统开机之后就会强制用户登录微软账户&#xff0c;不然就没法进入下一步。 如果你在重装了Windows10系统之后&#xff0c;到了联网步骤时连接上了网络&#xff0c;那么也会强制你登录微软账户&#xff0c;而不是创建本地账户&am…

Spring Data JPA从入门到精通--对查询结果的扩展

如果 我们想仅仅返回实体中的几个字段&#xff0c;应该怎么做呢&#xff1f; 基于projections的思路&#xff0c;其实是比较容易的。 我们只需要声明一个 接口&#xff0c;包含要返回的属性的方法即可&#xff0c;例如&#xff1a; Repository里面的写法如下&#xff0c;直接…

面向对象编程(高级)

面向对象编程&#xff08;高级&#xff09; 1、类变量和类方法 &#xff08;1&#xff09; 概念 类变量&#xff0c;也称为静态变量&#xff0c;是指在类级别声明的变量。它们与特定类相关联&#xff0c;而不是与类的实例&#xff08;对象&#xff09;相关联。每个类变量只有…

jmeter的安装与目录介绍

1、启动 apache-jmeter-5.0\bin 2、永久修改中文配置 zh-CN就行了

Docker与虚拟机的比对

在Windows操作系统上的对比&#xff1a; 但是官方还是建议我们尽量不要将Docker直接安装到Windows操作系统上。

单机多进程,每个进程多张卡 mpi nccl 程序设计检验

做了部分注释&#xff0c;比较乱 本示例结构&#xff1a; 1&#xff0c;源代码 #include <stdlib.h> #include <stdio.h> #include "cuda_runtime.h" #include "nccl.h" #include "mpi.h" #include <unistd.h> #include <…

MySQL的基础架构之内部执行过程

MySQL的逻辑架构图 如上图所示&#xff0c;MySQL可以分为Server层和存储引擎层两部分&#xff1a; 1&#xff09;Server层涵盖了MySQL的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学和加密函数等&#xff09;&#xff0c;所有跨存储引擎…

Javaweb之Mybatis的基础操作的详细解析

1. Mybatis基础操作 学习完mybatis入门后&#xff0c;我们继续学习mybatis基础操作。 1.1 需求 需求说明 通过分析以上的页面原型和需求&#xff0c;我们确定了功能列表&#xff1a; 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除 …

腾讯云轻量应用服务器详细介绍_2024年更新

腾讯云轻量应用服务器开箱即用、运维简单的轻量级云服务器&#xff0c;CPU内存带宽配置高并且价格特别便宜&#xff0c;大带宽&#xff0c;但是限制月流量。轻量2核2G3M带宽62元一年、2核2G4M优惠价118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;756元3年、…

数据库应用课程学生表、课程表、选课表mysql语句实战练习

1、创建表结构 目录 1、创建表结构 1.1 创建学生表 1.2 创建课程表 1.3创建选课表 1.4 插入学生表 1.5 插入课程表 1.6 插入选课表 2.以下布置操作是根据以上建立的三张表格基础上进行mysql语句的练习 2.1 查询学生信息并添加入新表 2.1.1 查询全体学生的学号与姓名&#…