C 文件系统编程

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <error.h>

#include <fcntl.h>

#include <sys/types.h>

#include <sys/stat.h>

 

#define Name 16

#define Num 32

 

struct student

{

      unsigned int id;

      char name[Name];

};

 

 int main(int argc, char **argv)

 {

      int fd,id;

      struct student std;

      char name[Name];

      if(argc!=2)

      {

           printf("too few arguments\n");

           exit(1);

      }

      fd = open(argv[1],O_WRONLY|O_CREAT,S_IRUSR|S_SIWUSR);

      if(fd==-1)

      {

           perror("open faild");

           exit(1);

      }

      printf("Please input the student informayion\n");

      for(;;)

      {

           printf("ID: ");

           scanf("%d",&id);

           if(id<0)

           {

                 printf(Complete!\n);

                 exit(0);

           }

           else

           {

                 printf("Name:");

                 scanf("%16s", name);

                 std.id=id;

                 bzero(std.name, Name);

                 strcpy(std.name, name);

                 lseek(fd, id*sizeof(std), SEEK_SET);

                 write(fd, (char *)&std, sizeof(std));            

           }

      }

      close(fd);

      return 0;  

 }

 

 

 #include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <sys/stat.h>

 

int main(int argc, char **argv)

{

      struct stat st;

      if(argc!=2)

      {

           printf("too few arguments\n");

           exit(1);

      }

      stat(argv[1],&st);

      printf("File Size:%dld Byrte\n",st.st_size);

      printf("File Type:")

      switch(st.st_mode&S_IFMT)

      {

           case S_IFSOCK;

                 printf("Socket\n");

                 break;

           case S_IFLNK;

                 printf("Symbolic link\n");

                 break;

           case S_IFREG;

                 printf("Regular file\n");

                 break;

           case S_IFBLK;

                 printf("Block device\n");

                 break;

           case S_IFDIR;

                 printf("Directory\n");

                 break;

           case S_IFCHR;

                 printf("Character device\n");

                 break;

           case S_IFIFO;

                 printf("FIFO\n");

                 break;

           default;

      }

      return 0;

}

 

 

/**************

创建目录文件

***************/

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <error.h>

#include <fcntl.h>

#include <sys/stat.h>

#include <sys/types.h>

 

int main(int argc, char **argv)

{

      int ret;

      if(argc!=2)

      {

           printf("too few arguments\n");

           exit(1);

      }

      ret = mkdir(argv[1],S_IRUSR|S_IXUSR);

      if(ret==-1)

      {

           perror("mkdir failed\n");

           exit(1);

      }

      printf("Done\n")

      return 0;

}

 

 

/*******************************

*列出指定目录下所有文件和子目录*

********************************/

 

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <sys/types.h>

#include <dirent.h>

 

int main(int argc, char **argv)

{

      DIR *dp;

      struct dirent *dirp;

      if(argc!=2)

      {

           printf("too few arguments\n");

           exit(1);

      }

      dp = opendir(argv[1]);

      if(dp==NULL)

      {

           perror("opendir error");

           exit(1);

      }

      while((dirp = readdir(dp))!=NULL)

      {

           if((strcmp(dirp->d_name,".")==0)||(strcmp(dirp->d_name,"..")==0))

                 continue;

           if(dirp->d_type==DT_DIR)

           {

                 printf("%s<directory>\n",dirp->d_name);

           }

           else

                 printf("%s\n",dirp->d_name);

      }

      closedir(dp);

      return 0;

}

 

 

/*********

*工作目录*

**********/

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <error.h>

#include size 64

int main()

{

      int ret;

      char buf[size];

      getcwd(buf,sizeof(buf));

      printf("%s\n",buf);

      ret = chdir("..");

      if(ret == -1)

      {

           perror("chdir error");

           exit(1);

      }

      getcwd(buf,sizeof(buf));

      printf("%s\n",buf);

      return 0;

}

 

 

/***********************

*获取指定文件的访问权限*

************************/

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

 

int main(int argc, char **argv)

{

      if(argc!=2)

      {

           printf("too few arguments\n");

           exit(1);

      }

      if(access(argv[1],F_OK)!=-1)

      {

           if(access(argv[1],R_OK)!=-1)

                 printf("read\n");

           if(access(argv[1],W_OK)!=-1)

                 printf("write\n");

           if(access(argv[1],X_OK)!=-1)

                 printf("execute\n");

      }

      else

      {

           printf("%s dose not exist\n",argc[1]);

      }

      return 0;

}

 

 

/*******************

*修改文件的访问权限*

********************/

#include <stdlib.h>

#include <stdio.h>

#include <error.h>

#include <sys/types.h>

#include <sys/stat.h>

 

int main(int argc, char **argv)

{

      int ret;

      if(argc!=2)

      {

           printf("too few arguments\n");

           exit(1);

      }

      ret = chmod(argv[1],S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);

      if(ret==-1)

      {

           perror("chmod failed");

           exit(1);

      }

      printf("Done\n");

      return 0;

}

 

 

作者: luozhiyong131   发布时间: 2010-10-26