1:实现文件夹的拷贝功能 注意判断被拷贝的文件夹是否存在,如果不存在则提前创建,创建文件夹的函数为 mkdir 不考虑递归拷贝的问题
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/wait.h>
#include <pthread.h>
int main(int argc,const char *argv[])
{
char jia[128]="/home/ubuntu/io_d5/4.3/";
char jia_back[128]="/home/ubuntu/io_d5/4.3_cp/";
DIR *fp1=opendir(jia);
if(NULL==fp1)
{
perror("opendir");
return 1;
}
DIR *fp2=opendir(jia_back);
if(NULL==fp2)
{
mkdir(jia_back,0777);
}
while(1)
{
struct dirent *Dir=readdir(fp1);
if(NULL==Dir)break;
char rdf[128];
strcpy(rdf,Dir->d_name);
printf("%s\n",rdf);
if((strcmp(rdf,".") && strcmp(rdf,"..")))
{
printf("------\n");
char rdf_file[128]={0};
strcat(rdf_file,jia);
strcat(rdf_file,rdf);
char wrf_back[128]={0};
strcat(wrf_back,jia_back);
strcat(wrf_back,rdf);
int fd1=open(rdf_file,O_RDONLY);
perror("open");
int fd2=open(wrf_back,O_CREAT|O_WRONLY,0664);
perror("open");
while(1)
{
char str[256]={0};
int res=read(fd1,str,sizeof(str));
perror("read");
if(res==0){break;}
write(fd2,str,res);
}
close(fd1);
close(fd2);
}
}
printf("ok\n");
closedir(fp1);
closedir(fp2);
return 0;
}
2:有如下结构体 struct Student{ char name[20]; int age; double math_score; double chinese_score; double english_score; double physical_score; double chemical_score; double biological_score; } 申请一个该结构体数组,使用 fprintf / fscanf,将该结构体数组中的所有数据,写入文件中,然后重新加载到数组中 同样的操作,使用fwrite/fread 和 write/read再做一遍
3:创建一对父进程,在父进程能够向子进程发送消息的基础上发 同时子进程也能够向父进程发送消息
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc,const char *argv[])
{
pid_t res=fork();
if(res>0)
{
int fd=open("/home/ubuntu/io_d5/4.3/1.txt",O_CREAT|O_TRUNC|O_WRONLY,0664);
char str[100]={0};
int size=0;
printf("父进程:请输入:");
scanf("%100s",str);
while(getchar()!=10);
size=strlen(str);
write(fd,str,size);
close(fd);
wait(0);
int fa=open("/home/ubuntu/io_d5/4.3/2.txt",O_RDONLY);
while(1)
{
char str[100]={0};
int res=read(fa,str,100);
if(res!=0)
{
printf("父进程:读取到的消息为:%s\n",str);
break;
}
}
}
else if(res==0)
{
int fd=open("/home/ubuntu/io_d5/4.3/1.txt",O_RDONLY);
while(1)
{
char str[100]={0};
int res=read(fd,str,100);
if(res!=0)
{
printf("子进程:读取到的消息为:%s\n",str);
break;
}
}
close(fd);
int fa=open("/home/ubuntu/io_d5/4.3/2.txt",O_CREAT|O_TRUNC|O_WRONLY,0664);
char str[100]={0};
int size=0LEAR
printf("子进程:请输入:");
scanf("%100s",str);
while(getchar()!=10);
size=strlen(str);
write(fa,str,size);
close(fa);
}
else if(res==-1)
{
perror("fork");return 1;
}
return 0;
}