{ int id; char cmd[80]; char *cmd1; char *cmd2;
printf(\
printf(\ //将your-sid改为你的学号 printf(\ while(1) {
printf(\ //显示命令提示符 fgets(cmd, 80, stdin); //从键盘读入命令行
cmd[strlen(cmd)-1]=0; //将行尾字符置为字符串结束符0 printf(\ cmd1=strtok(cmd,\
cmd2=strtok(NULL,\ //将命令行分开成两部分 if ( strcmp(cmd, \ exit(0); //内部命令quit if ( strcmp(cmd, \ pwd(); //内部命令pwd
if ( strcmp(cmd, \ {sleep(5); printf(\内部命令pwd else { //外部命令 id=fork();
if (id<0) { printf(\ if ( id == 0 ) {
if(cmd2==NULL) execlp(cmd1, cmd1, NULL); else execlp(cmd1, cmd1, cmd2, NULL); if (execlp(cmd, cmd, NULL)<0) printf(\ exit(2); }
wait(NULL); } } }
void pwd() {
char dir[50]; getcwd(dir,50); printf(\}
参考文献
[1] 张玲. Linux操作系统 基础、原理与应用,北京:清华大学出版社,2014年2月。
[2] Neil Matthew, Richard Stones. Linux程序设计(第3版). 陈健等译. 北京:人民邮电出版社, 2007. [3] Mark G. Sobell. Linux命令、编辑器与Shell编程. 杨明军等译. 北京:清华大学出版社, 2007.