{ 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.