使用c实现我的shell,更改目录

时间:2014-12-04 22:19:36

标签: shell

实现我自己的shell

我没有发布整个代码以节省您的时间,

简单地说我用exec()来执行命令行

我的问题在下面的评论栏中阐明

感谢您的帮助

int main()
{
int pid[2];
char inbuf[10];
printf("\n\nSimple Shell using C\n");


char hostname[1024];
hostname[1023] = '\0';
gethostname(hostname, 1023);
char resolved_path[100];
realpath("./", resolved_path);
printf("Maram @%s :<%s>$ ", hostname,resolved_path);  //MY PROBLEM: For cd command ex: cd Desktop/Folder.. does not go in this directory and the resolved path does not change 

while(1){
    printf("[my shell] :");
    gets(inbuf);
    if(fork()){
        wait();
    }else{
        pip(inbuf, 0, 1);
    }
}
return 0;

}

///此外,如果输入的命令行不正确,如何打印未找到的命令?

1 个答案:

答案 0 :(得分:1)

在这个程序中你没有调用chdir() - 这是改变当前进程目录的唯一方法(除了fchdir()之类的功能等同物;它仍然保留它们仅影响的基本限制目前的过程,而不是其父母)。

使用exec-family调用启动一个更改自己的目录的外部程序无效 - 该程序的目录与shell的目录是分开的。如果你想要有任何效果,shell必须改变它自己的目录而不用。