-
大小: 2KB文件類型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-06-12
- 語(yǔ)言: 其他
- 標(biāo)簽:
資源簡(jiǎn)介
在linux中實(shí)現(xiàn)一個(gè)簡(jiǎn)單的命令解釋程序,功能要求:
1)同時(shí)支持內(nèi)部命令和外部命令,內(nèi)部命令支持兩個(gè)(cd、exit)
2)支持后臺(tái)命令
代碼片段和文件信息
#include
#include
#include
#include
#include
#include
#define?MAX_CMD_LEN?256
void?printCwd(){
long?size;
char?*buf;
char?*cwd;
size=pathconf(“.“_PC_PATH_MAX);
if((buf=(char?*)malloc((size_t)size))!=NULL)
cwd=getcwd(buf(size_t)size);
printf(“%s$“cwd);
}
void?getcmd(char*?cmd){
????while((cmd[0]=getchar())==‘?‘);
????int?i=0;
do{
i++;
cmd[i]=getchar();
}while(cmd[i]!=‘\n‘&&i<=MAX_CMD_LEN);
if(i>MAX_CMD_LEN){
??perror(“命令行的長(zhǎng)度超限“);
??printCwd();
}
cmd[i]=‘\0‘;
}
int?main(){
????char?cmd[MAX_CMD_LEN+1];
????printf(“enter?sehll....\n“);
?????while(1){
????????????printCwd();
????????????memset(cmd0sizeof(cmd));
????????????getcmd(cmd);
????????????if(strncmp(cmd“exit“4)==0){
????????????????printf(“shell?exit?.....\n“);
????????????????break;
????????????}if(strncmp(cmd“cd“2)==0){
????????????????//?printf(“?do?cd?\n“);
??
評(píng)論
共有 條評(píng)論