#include<stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include<errno.h>
#include<time.h>
#include<unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<strings.h>
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./HW.txt","w+");
if(fp==NULL)
{
perror("open");
return -1;
}
printf("文件创建成功\n");
DIR*ML=opendir("../day3/");
if(NULL==ML)
{
perror("opendir");
return -1;
}
printf("目录打开成功\n");
struct dirent* my_ML;
struct stat date;
struct tm* TIME;
while(1)
{
my_ML=readdir(ML);
if(my_ML==NULL)
{
if(errno==0)
{
printf("已读完\n");
}
else
perror("读取失败");
break;
}
if((stat(my_ML->d_name,&date))<0)
{
perror("读取err1");
}
mode_t bb=date.st_mode;
TIME=localtime(&date.st_atime);
fprintf(fp,"0%o %d-%02d-%02d %02d: %02d: %02d %s\n",\
bb,TIME->tm_year+1900,TIME->tm_mon+1,TIME->tm_mday,\
TIME->tm_hour,TIME->tm_min,TIME->tm_sec,my_ML->d_name);
}
fclose(fp);
closedir(ML);
return 0;
}
运行结果
#include<stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
FILE*fp=fopen("./HW.txt","r");
if(NULL==fp)
{
perror("fp");
return -1;
}
FILE*my_picture=fopen("./my_pic","w");
if(my_picture==NULL)
{
perror("my_picture");
return-1;
}
int where;
char date;
where=fseek(fp,0,SEEK_END);
fseek(fp,0,SEEK_SET);
pid_t cpid= fork();
if(cpid>0)
{
//父进程
int i;
for(i=0;i<where/2;i++)
{
fread(&date,1,1,fp);
fwrite(&date,1,1,my_picture);
}
fflush(my_picture);
}
if(cpid==0)
{
sleep(1);
//zi进程
while(fread(&date,1,1,fp)!=0)
{
fwrite(&date,1,1,my_picture);
}
fflush(my_picture);
}
if(cpid<0)
{
perror("cpid");
return -1;
}
fclose(fp);
fclose(my_picture);
return 0;
}