用标准C实现shell功能(转)[@more@]
#include
#include #include #include #include #include #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
", argv[0], cmd, strerror(errno));exit(1);} wait(&statval);if(WIFEXITED(statval)) {if(WEXITSTATUS(statval)){fprintf(stderr,"%s: child exited with status %d.
",argv[0], WEXITSTATUS(statval));}} else {fprintf(stderr, "%s: child died unexpectedly.
", argv[0]);}}}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8225414/viewspace-944582/
,如需转载,请注明出处,否则将追究法律责任。