1.3 day3 IO进程线程

使用标准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.hqwc.cn/news/317768.html

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

相关文章

如何将图像数据转换为.mat文件,mat文件内是cell封装的struct格式的数据

在我看论文&#xff1a;《 Holistically-nested Edge Detection (HED) 》的时候&#xff0c;对论文中有关边缘结果的评价指标很感兴趣&#xff0c;于是我就研究了如何计算这些指标 如果有同样感兴趣或者有需要的小伙伴可以下载这里的代码&#xff1a;GitHub - xwjabc/hed: A P…

单片机原理及应用:独立式键盘控制LED与多功能按键识别

今天来介绍另一个外设——按键与LED的配合工作&#xff0c;与开关不同&#xff0c;按键需要注意消除抖动带来的影响&#xff0c;代码逻辑也会更复杂一写&#xff0c;下面先为大家介绍独立式键盘的相关知识。 单片机的独立式键盘指的是一种不依赖于计算机或其他外部设备的键盘输…

Calibre PEX Hspice Netlist提取步骤(数模芯片提取spice netlist流程)

在数模混合芯片中&#xff0c;通常模拟需要数字模块通过calibre工具来提取Hspice netlist用于功耗仿真。注意这里的spice netlist和做Calibre的spice netlist是不太一样的。 另外在做calibre pex时需要确保当前的design LVS已经pass。否则功耗仿真可能会不准。 Calibre LVS常…

rime中州韵小狼毫 inputShow lua Translator 输入字符透传翻译器

在 rime中州韵小狼毫 help lua Translator 中我们分享了如何使用 lua 脚本定义一个 translator&#xff0c;并以 五笔・拼音 为例引用了该 translator&#xff0c;并且达到了预期的效果。 今天&#xff0c;我们继续通过 lua 脚本为 rime中州韵/小狼毫 输入法打造一个 translat…

JRT控制打印机

本次测试打印机控制和纸张方向控制。 打印机状态 选择打印机 控制纸张 定义纸张 旋转纸张 不旋转纸张 A4

BLE Mesh蓝牙组网技术详细解析之Access Layer访问层(六)

目录 一、什么是BLE Mesh Access Layer访问层&#xff1f; 二、Access payload 2.1 Opcode 三、Access layer behavior 3.1 Access layer发送消息的流程 3.2 Access layer接收消息的流程 3.3 Unacknowledged and acknowledged messages 3.3.1 Unacknowledged message …

php安装扩展event 提示 No package ‘openssl‘ found 解决方法

在使用pecl编译安装最新版event模块的时候提示 No package openssl found , 可是本机是安装了openssl的, 编译时找不到, 大概率就是环境配置的问题了, 增加 OPENSSL_CFLAGS OPENSSL_LIBS环境变量即可解决. 异常提示信息: checking for openssl > 1.0.2... no configure: …

在pycharm中jupyter连接上了以后显示无此库,但是确实已经安装好了某个库,使用python可以跑,但是使用ipython就跑不了

今天遇到一个事情&#xff0c;就是用pycharm的jupyter时&#xff0c;连接不上&#xff0c;后来手动连接上了以后&#xff0c;发现环境好像不对。 一般来说&#xff0c;这里会是python3&#xff0c;所以里面的环境也是普通python的环境&#xff0c;并没有我下载的库&#xff0c;…

Python学习笔记之(一)搭建Python 环境

搭建Python 环境 1. 使用工具准备1.1 Python 安装1.1.1 下载Python 安装包1.1.2 安装Python 1.2 VScode 安装1.2.1 下载VScode安装包1.2.2 给VScode安装Python 扩展 2. 第一次编写Python 程序 本篇文章以Windows 系统为例。 1. 使用工具准备 1.1 Python 安装 1.1.1 下载Pytho…

虹科方案|从困境到突破:TigoLeap方案引领数据采集与优化

导读&#xff1a;在数字化工厂和智能制造的时代&#xff0c;数据已经成为优化机器和流程的关键。然而&#xff0c;如何高效地收集和处理这些数据&#xff0c;特别是在开发、部署和生产阶段&#xff0c;仍是企业面临的一大挑战。虹科TigoLeap平台&#xff0c;作为一款引领行业变…

k8s快速搭建

VMware16Pro虚拟机安装教程VMware16.1.2安装及各版本密钥CentOS7.4的安装包:提取码&#xff1a;lp6qVMware搭建Centos7虚拟机教程 搭建完一个镜像 关机 拍摄一个快照,克隆两个作为子节点 0. 环境准备 在开始之前&#xff0c;部署Kubernetes集群机器需要满足以下几个条件&#…

每周一算法:倍增法查找位置

倍增法 倍增法&#xff08;Binary Lifting&#xff09;&#xff0c;顾名思义&#xff0c;就是利用“以翻倍的速度增长”的思想来解决问题的一类算法。 下面介绍如何使用倍增法在有序的序列中查找满足条件的位置。 题目描述 给定一个单调不降的序列&#xff0c;以及 m m m个…