我正在一个迷你项目中工作:"我自己的命令解释器(壳)",像Bash shell或Sh shell。直到现在它可以执行每个预定义的命令,如ls,ps,pwd,date。除此之外,我已经实现了一些其他操作,如输入重定向(<),输出重定向(>),PIPE(|)功能。除此之外,我还实现了自己的用户命令,如pid,ppid,quit,hist。
vvdnlt208@vvdnlt208-Vostro-3446:~/project/Vector/sourabh/unix/proj2$ ./my_sh
<1 SOURABH> ls
a cd.c execute.o inredir.c main.o multiexec.o my_sh sh.c sigign.c test.c
addhist.c dir header.h inredir.o Makefile mypipe.c outredir.c showhist.c sigign.o tetest.c
addhist.o execute.c inredir main.c multiexec.c mypipe.o outredir.o showhist.o test2.c
<2 SOURABH> ps
PID TTY TIME CMD
6120 pts/10 00:00:01 bash
6510 pts/10 00:00:00 grep
6512 pts/10 00:00:00 grep
6514 pts/10 00:00:00 grep
6516 pts/10 00:00:00 grep
7772 pts/10 00:00:00 my_sh
7774 pts/10 00:00:00 ps
<3 SOURABH> pwd
/home/vvdnlt208/project/Vector/sourabh/unix/proj2
<4 SOURABH> date
Fri Nov 14 16:44:24 IST 2014
<5 SOURABH>
<6 SOURABH>
<7 SOURABH>
<8 SOURABH> hist
1 ls
2 ps
3 pwd
4 date
8 hist
<9 SOURABH> ls >a.txt
<10 SOURABH> pid
7772
<11 SOURABH> ppid
但我在执行cd命令时面临一些困难......
<12 SOURABH> cd
cd: No such file or directory
<13 SOURABH> cd dir
cd: No such file or directory
<14 SOURABH>
有人告诉我自己实施它...请帮我这样做。提前谢谢。
答案 0 :(得分:5)
cd
不是程序,它是内置命令。内置命令直接内置在shell中。
要实施cd
,您基本上需要
chdir()
更改当前目录OLDPWD
和PWD
)答案 1 :(得分:4)
您可能希望查看chdir
中的unistd.h
功能。这会更改当前进程的工作目录。
答案 2 :(得分:0)
在我的项目中,我使用chdir()来实现我的cd命令,它可以工作。每个流程都有自己的PWD(当前工作目录)。 shell也是一个进程,它的默认PWD是其父进程的PWD(我执行./my_sh的bash shell)。