WEB开发网
开发学院软件开发C++ 用标准C实现shell功能 阅读

用标准C实现shell功能

 2008-03-08 21:59:36 来源:WEB开发网   
核心提示:#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <sys/wait.h>#include <string.h>#include <errno.h>#define SH

  #include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <string.h>
#include <errno.h>

#define SHELL_NAME "sh1"
#define PROMPT_ENVIRONMENT_VARIABLE "PROMPT"

char *prompt;

int main(int argc, char **argv)
{
char cmd[80];
int statval;

/* Determine prompt value. */
if ((prompt = getenv(PROMPT_ENVIRONMENT_VARIABLE)) == NULL)
prompt = SHELL_NAME ":";

/* Process commands until exit, or death by signal. */
while (1)
{
/* Prompt and read a command. */
printf(prompt);
gets(cmd);

/* Process built-in commands. */
if(strcasecmp(cmd, "exit") == 0)
break;

/* Process non-built-in commands. */
if(fork() == 0) {
execlp(cmd, cmd, NULL);
fprintf(stderr, "%s: Exec %s failed: %s\n", argv[0],
cmd, strerror(errno));
exit(1);
}

wait(&statval);
if(WIFEXITED(statval))
{
if(WEXITSTATUS(statval))
{
fprintf(stderr,
"%s: child exited with status %d.\n",
argv[0], WEXITSTATUS(statval));
}
} else {
fprintf(stderr, "%s: child died uneXPectedly.\n",
argv[0]);
}
}
}

Tags:标准 实现 shell

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接