linux下使用系统调用读取文件中的路径

类别:编程语言 点击:0 评论:0 推荐:

可以配合昨天的模拟shell做到从环境变量中读取可执行文件路径

读取的path.txt内容为
/bin;/home/test;

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <fcntl.h>
#include <time.h>
#define max 8192

int slip(char* str,char* path[10])
{
  char* p;
  int i,j;
  char fullpath[10][max]={};
  p=str;
  i=0;
  while((*p)!=10)
    {
      j=0;
      while((*p)!=';')
 {
   fullpath[i][j++]=*p;
   p++;
 }
      i++;
      p++;
    }
  i=0;
  while(i<10)
    {
      path[i]=fullpath[i];
      i++;
    }
  i=0;
  while(path[i][0]!=0)
    {
      printf("%d is %s\n",i,path[i]);
      i++;
    }
  if(path==NULL)return 0;
  return 1;
}


int main()
{
  int i;
  char fpath;
  char* path[10];
  FILE* stream;
  char tempstr[max]={};
  if((stream=fopen("./path.txt","r"))==NULL)
    {
      printf("can not open file\n");
      exit(1);
    }
  printf("openfile is ok\n");
  while((fpath=fgetc(stream))!=EOF)
    {
      tempstr[0]=fpath;
      if(fgets(&tempstr[1],max,stream)==NULL)exit(1);
    }
  printf("the data is %s\n",tempstr);
  if(slip(tempstr,path)==0)
    {
      printf("the slip fails\n");
      exit(1);
    }
  i=0;
  while(path[i][0]!=0)
    {
      printf("path[%d] is %s\n",i,path[i]);
      i++;
    }
  return 1;
}

 

本文地址:http://com.8s8s.com/it/it27206.htm