|
|
现在要用C写一个shell,我就直接使用popen了,但是
发现cd命令不能改变当前路径,应该使用什么方式呢
下面是我的代码
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define commandLength 4096
void HandleCommand(char *command)
{
FILE *read_fp;
char buffer[4096];
int chars_read;
memset(buffer,'\0',sizeof(buffer));
read_fp=popen(command,"r");
if(read_fp!=NULL)
{
chars_read=fread(buffer,sizeof(char),4096,read_fp);
if(chars_read>0)
{
printf("\n%s",buffer);
}
pclose(read_fp);
return;
}
printf("命令错误输入\n");
return;
}
int main()
{
char * temp;
printf("##############欢迎进入刘昕的shell########### \nliuxin's shell&&: ");
char inputcommand[commandLength];
while(1)
{
fgets(inputcommand,commandLength,stdin);
if(strcmp(inputcommand,"exit\n")==0) {
printf("您已经正常退出本shell\n");
return 1;
}
temp=strtok(inputcommand," ");
if(strcmp(temp,"cd")==0) //使用外部函数chdir控制当前目录
{ temp =strtok(NULL, " ");
chdir(temp);
system(inputcommand);
}
else
HandleCommand(inputcommand);
printf("\nliuxin's shell&&: ");
}
} |
|