实现我自己的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;
}
///此外,如果输入的命令行不正确,如何打印未找到的命令?
答案 0 :(得分:1)
在这个程序中你没有调用chdir()
- 这是改变当前进程目录的唯一方法(除了fchdir()
之类的功能等同物;它仍然保留它们仅影响的基本限制目前的过程,而不是其父母)。
使用exec-family调用启动一个更改自己的目录的外部程序无效 - 该程序的目录与shell的目录是分开的。如果你想要有任何效果,shell必须改变它自己的目录而不用。