UC编程04-io读写write/read系统函数的使用

简介: ////myuc.h #include #include #include #include #include #include #include #include #include#include#include...

////myuc.h

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<string.h>
#include<sys/types.h>
#include<sys/mman.h>
#include<sys/stat.h>


#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
//#include<sys/types.h>
//#include<sys/stat.h>
#include<string.h>
#include<fcntl.h>
int main(){
	//系统会减去other组的写权限
	int fd=open("open4.txt",O_RDWR|O_CREAT|O_TRUNC,0777);
	if(fd==-1)
		perror("open"),exit(-1);//连接两个语句
	char buf[100]={};
	strcpy(buf,"mybuff1\n");
	write(fd,buf,strlen(buf));
	printf("openok,fd=%d\n",fd);
	close(fd);
	int fd2=open("open4.txt",O_RDONLY);
	if(fd2==-1) perror("open read"),exit(-1);
	memset(buf,0,sizeof(buf));
	int readcount=read(fd,buf,sizeof(buf));
	printf("fd2:%d,readed(%d):%s\n",fd2,readcount,buf);
	close(fd2);
	fd2=open("a.out",O_RDONLY);
	if(fd2==-1) perror("open src"),exit(-1);
	fd=open("a.out1",O_RDWR|O_CREAT|O_TRUNC,0777);
	if(fd==-1) perror("write dest"),exit(-1);
	//readcount=0;
	while(1){
		readcount=read(fd2,buf,sizeof(buf));
		if(readcount==0) break;
		else if(readcount==-1){
			perror("read src");break;
		}
   		write(fd,buf,readcount);
	}
	//while(readcount>0);
	close(fd);
	close(fd2);
	printf("文件复制成功!\n");
	
	return 0;
}

#include "myuc.h"
int main(){
	int fd=open("b.txt",O_RDWR);
	if(fd==-1) perror("open"),exit(-1);
	char ch;
	read(fd,&ch,1);
	printf("%c\n",ch);
	read(fd,&ch,1);
	printf("%c\n",ch);
	lseek(fd,7,SEEK_SET);
	read(fd,&ch,1);
	printf("%c\n",ch);
	lseek(fd,0,SEEK_SET);//回到开始
	write(fd,"1",1);//替换a
	lseek(fd,3,SEEK_SET);
	write(fd,"2",1);//替换d
	lseek(fd,-2,SEEK_END);//注意最后的\n,也是一个字节
	write(fd,"3",1);//替换到数第二个
	int len=lseek(fd,0,SEEK_END);//文件大小
	close(fd);
	return 0;
}

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
//#include<sys/types.h>
//#include<sys/stat.h>
#include<string.h>
#include<fcntl.h>
typedef struct EMP{
	int id;
	char name[100];
	double salary;
}emp;
int main(){
	int fd=open("write4.txt",O_CREAT|O_RDWR|O_APPEND,0777);
	if(fd==-1) perror("open"),exit(-1);
	printf("请输入编号,姓名,薪水:\n");
	emp em;
	scanf("%d%s%lf",&em.id,em.name,&em.salary);
	int res=write(fd,&em,sizeof(emp));
	if(res==-1) printf("失败\n");
	else printf("成功!\n");
	close(fd);
	fd=open("write4.txt",O_RDONLY);
	while(1)
	{
		res=read(fd,&em,sizeof(em));
		if(res==0) break;
		else if(res==-1) {
			perror("read");break;
		}
		printf("%d,%s,%g\n",em.id,em.name,em.salary);
	}
	close(fd);

	return 0;
}

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
void w1()//系统调用多,花时间多
{
	int fd=open("a.txt",O_CREAT|O_TRUNC,0777);
	if(fd==-1) perror("openwrite1"),exit(-1);
	int i;
	for(i=0;i<1000000;i++){
		write(fd,&i,4);
	}
}
void w2(){//系统调用少,省时间
	int fd=open("a.txt",O_RDWR|O_TRUNC);
	if(fd==-1) perror("openwrite2"),exit(-1);
	int arr[10000];
	int i;
	for(i=0;i<1000000;i++){
		arr[i%10000]=i;
		if(i%10000==9999) write(fd,arr,sizeof(arr));//10000个数字才写入一次
	}
	close(fd);
}
int main()
{
	//w1();
	w2();	
}


相关文章
|
7月前
|
iOS开发
iOS 分享 第三方登录 Twitter 注册应用以及读写权限
iOS 分享 第三方登录 Twitter 注册应用以及读写权限
274 0
|
5月前
|
Linux 测试技术 API
linux系统编程 文件io
linux系统编程 文件io
113 0
|
6月前
|
数据采集 并行计算 Java
【文末送书】Python高并发编程:探索异步IO和多线程并发
【文末送书】Python高并发编程:探索异步IO和多线程并发
127 0
|
3月前
|
Linux
Linux io多块读写readv函数和writev函数
fd参数是被操作的目标文件描述符。iov参数的类型是iovec结构数组,该结构体描述一块内存区。iovcnt参数是iov数组的长度,即有多少块内存数据需要从fd读出或写到fd。readv和writev在成功时返回读出/写入fd的字节数,失败则返回-1并设置errno。readv函数将数据从文件描述符读到分散的内存块中,即分散读;writev函数则将多块分散的内存数据一并写入文件描述符中,即集中写。
20 0
|
4月前
|
安全 API C#
C# | System.IO.Pipelines 很酷的读写数据流方式!
文本分享一种新的读写数据流方式 —— System.IO.Pipelines。这个东西在 .NET Core 2.1 中出现了,它能够帮助你更高效地处理数据流。 System.IO.Pipelines 是啥? System.IO.Pipelines 是一个用于读写数据流的高性能 API。它主要由三个部分组成:Pipe、PipelineReader 和 PipelineWriter。 Pipe 是一个异步、线程安全的缓冲区,它让数据在生产者和消费者之间流动。PipelineReader 和 PipelineWriter 则是 Pipe 的读取和写入端点。
58 0
C# | System.IO.Pipelines 很酷的读写数据流方式!
|
4月前
C++IO流文件读写(文本文件,二进制文件)
C++IO流文件读写(文本文件,二进制文件)
40 0
|
5月前
|
缓存 Unix Linux
linux系统编程 标准io
linux系统编程 标准io
66 0
|
7月前
|
存储 编译器 Linux
Linux系统编程2(基础IO详解)
Linux系统编程2(基础IO详解)
90 0
|
7月前
|
Linux C语言
【Linux系统编程】IO标准缓冲区
【Linux系统编程】IO标准缓冲区
98 0
|
8月前
|
存储 JSON 数据格式
【python】IO编程
【python】IO编程
76 0