可以配合昨天的模拟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;
}