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