IO进程线程day3

思维导图

1> 使用标准io完成两个文件的拷贝

#include <my_head.h>
int main(int argc, const char *argv[])
{
	if(argc!=3)
	{
		printf("input file error!\n");
		return -1;
	}
//定义两个文件描述符变量
	int srcfd,destfd;
	//以只读的方式打开源文件
	if((srcfd=open(argv[1],O_RDONLY))==-1)
	{
		perror("open srcfile error");
		return -1;
	}
	//以只写的方式打开目标文件
	if((destfd=open(argv[2],O_WRONLY | O_CREAT | O_TRUNC))==-1)
	{
		perror("open destfile error");
	}
	
	//定义一个搬运工
	char buf[128]="";
	//将读取原文件中的内容,写入到目标文件当中去
	while(1)
	{
		int res=read(srcfd,buf,sizeof(buf));
		write(destfd,buf,res);
		if(res==0)
		{
			printf("读取完毕\n");
			break;
		}
	}
	puts("copy success!");
	//关闭文件
	close(srcfd);
	close(destfd);
	return 0;
}

2> 使用文件IO完成两个文件的拷贝

#include <my_head.h>
int main(int argc, const char *argv[])
{
	if(argc!=3)
	{
		printf("input file error\n");
		return -1;
	}
	//定义两个文件指针分蘖指向源文件和目标文件
	FILE *srcfp=0;
	FILE *destfp=0;
	//分别以可读打开源文件,以可写打开目标文件
	if((srcfp=fopen(argv[1],"r"))==NULL)
	{
		perror("fopen srcfp error");
		return -1;
	}
	if((destfp=fopen(argv[2],"w"))==NULL)
	{
		perror("fopen destfp error");
		return -1;
	}
	//定义一个搬运工
	char buf[128]="";
	//循环把从源文件中读取的数据写入目标文件中去
	while(1)
	{
		int res=fread(buf,1,sizeof(buf),srcfp);
		fwrite(buf,1,res,destfp);
		if(feof(srcfp))//判断是否读取完毕
		{
			printf("读取完毕!");
			break;
		}
	}
	//关闭文件
	printf("copy sucess\n");
	fclose(srcfp);
	fclose(destfp);
	return 0;
}

3> 将stat函数实现一遍

int main(int argc, const char *argv[])
{
    //定义文件属性类型的数据
    struct stat sb;      //用于存储获得的文件属性

    //调用函数的到文件属性
    stat(argv[1], &sb);

    switch(sb.st_mode&S_IFMT)
    {
    case S_IFSOCK:
        {
            printf("这是套接字文件\t");
        }
        break;
    case S_IFLNK:
        {
            printf("这是链接文件\t");
        }
        break;
    case S_IFREG:
        {
            printf("这是普通文件\t");
        }
        break;
    case S_IFBLK:
        {
            printf("这是块设备文件\t");
        }
        break;
    case S_IFDIR:
        {
            printf("这是目录文件\t");
        }
        break;
    case S_IFCHR:
        {
            printf("这是字符设备文件\t");
        }
        break;
    case S_IFIFO:
        {
            printf("这是管道文件\t");
        }
        break;

    }

    printf("%#o\t%ld\t%ld\n", sb.st_mode&0777, sb.st_size, sb.st_ino);

    return 0;
}

4> 将目录操作实现一遍

#include<myhead.h>

int main(int argc, const char *argv[])
{
    //判断外部传参个数
    if(argc != 2)
    {
        printf("input error\n");
        printf("usage:./a.out name\n");
        return -1;
    }

    //定义目录指针
    DIR *dp = NULL;
    //打开目录
    if((dp = opendir(argv[1])) == NULL)
    {
        perror("opendir error");
        return -1;
    }

    //读取目录中的文件或目录信息
    struct dirent *sdp = NULL;
    while((sdp = readdir(dp)) != NULL)
    {
        //输出当前文件或目录的信息
printf("inode:%10ld, size:%10d, %10s, ",\
                sdp->d_ino, sdp->d_reclen, sdp->d_name);

        //输出类型
        switch(sdp->d_type)
        {
        case DT_BLK:
            {
                printf("b\n");
            }
            break;
    case DT_CHR:
            {
                printf("c\n");
            }
            break;

    case DT_DIR:
            {
                printf("d\n");
            }
            break;

    case DT_FIFO:
            {
                printf("p\n");
            }
            break;case DT_LNK:
            {
                printf("l\n");
            }
            break;
    case DT_REG:
            {
                printf("-\n");
            }
            break;
    case DT_SOCK:
            {
                printf("s\n");
            }
            break;
        }
    }

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值