#include<stdio.h>#include<errno.h>#include<sys/stat.h>#include<sys/types.h>#include<dirent.h>#include<unistd.h>#include<pwd.h>#include<grp.h>#include<time.h>char*change_mode(mode_t mode,char*res){char per[]="rwx";for(int i =0; i <9; i ++){if((mode&(0400>>i))==0){
res[i]='-';continue;}
res[i]= per[i%3];}return res;}intmain(int argc,constchar*argv[]){
DIR *dp =opendir("../day3/");if(NULL== dp){perror("opendir");return-1;}int count =1;structdirent* rp =NULL;while(1){
rp =readdir(dp);if(NULL== rp){if(0== errno){printf("readdir success\n");break;}else{perror("readdir");return-1;}}if((rp->d_name)[0]!='.'){structstat buf;if(stat(rp->d_name,&buf)<0){perror("stat");return-1;}char res[10]="";change_mode(buf.st_mode,res);printf("%s",res);//nlinkprintf(" %ld",buf.st_nlink);//uid gidstructpasswd*pwd =getpwuid(buf.st_uid);if(NULL== pwd){perror("getpwuid");return-1;}structgroup*gwd =getgrgid(buf.st_gid);if(NULL== gwd){perror("getgrgid");return-1;}printf(" %s %s",pwd->pw_name,gwd->gr_name);//sizeprintf(" %7ld ",buf.st_size);//timetime_t t =(time_t)buf.st_ctime;structtm* st =localtime(&t);printf("%2d月%2d %d:%2d ",st->tm_mon+1,st->tm_mday,st->tm_hour,st->tm_min);printf("%s\n",rp->d_name);}}closedir(dp);return0;}
#include<stdio.h>#include<sys/types.h>#include<unistd.h>intmain(int argc,constchar*argv[]){int a =10;pid_t cpid =fork();if(cpid >0)//father{printf("a father location %p\n",&a);
a++;printf("a father = %d\n",a);int b =1, c =2;printf("b father location %p\n",&b);printf("b father = %d\n",b);printf("c father location %p\n",&c);printf("c father = %d\n",c);while(1);}elseif(0== cpid){int d =3, e =4;printf("a child location %p\n",&a);printf("a child = %d\n",a);printf("d child location %p\n",&d);printf("d child = %d\n",d);printf("e child location %p\n",&e);printf("e child = %d\n",e);while(1);}else{perror("fork");return-1;}return0;}