shell.c
来自「unix下一个实现带参数的简单shell的程序」· C语言 代码 · 共 58 行
C
58 行
#include <sys/wait.h>#include "ourhdr.h"#include "error.c"#define MAXARG 10char *argv[MAXARG];void sig_int(int signo){ printf("interrupt\n"); exit(1);}void create_argv(char *buf){ int len=strlen(buf); int i,j=1; for(i=0;i<len;i++) { if(buf[i]=='\0'||i==(len-1)) buf[i]=0; else if(i>0 && buf[i-1]==0) { if(j>=MAXARG) err_sys("to many arguments"); argv[j]=buf+i; j++; } } if(j>=MAXARG) err_sys("too many arguments"); argv[j]=0; argv[0]=buf;} int main(void){ char buf[MAXLINE]; char *envp[]={"PATH=/bin:/usr/bin:/usr/local/bin:",0}; pid_t pid; int status,j,len; if(signal(SIGINT,sig_int)==SIG_ERR) err_sys("signal error"); printf("%%"); while(fgets(buf,MAXLINE,stdin)!=NULL) { create_argv(buf); if((pid=fork())<0) err_sys("fork error"); else if(pid==0) { execve(buf,argv,envp); err_ret("couldn't execve:%s",buf); exit(127); } if((pid=waitpid(pid,&status,0))<0) err_sys("waitpid error"); printf("%%"); } exit(0); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?