本节主要介绍一个进程控制的实例,功能就是在前台或者后台接收命令并执行命令,还能处理由若干个命令组成的命令行,该程序命名为samllsh。
基本逻辑就是
while(EOF not typed) { 从用户终端取得命令行 执行命令 }
setp1:取得命令行内容,用uerin函数实现,处理步骤首先显示提示符,提示符的具体内容由用户通过参数传递给函数,然后每次从键盘读取一个字符,存入inpbuf中,结束时userin返回字符个数或者EOF(文件结尾),换行符也要存入inpbuf
代码如下:
#include "smallsh.h" /* 程序缓冲区和指针 */ static char inpbuf[MAXBUF],tokbuf[2*MAXBUF], *ptr = inpbuf,*tok = tokbuf; /* userin()函数 */ int userin(chat* p) { int c,count; ptr = inpbuf; tok = tokbuf; /* 显示提示 */ printf("%s ",p); for (count = 0;;) { if ((c=getchar())==EOF) return(EOF); if (count < MAXBUF) inpbuf[count++] = c; if (c ==‘\n‘ && count < MAXBUF) { inpbuf[count] = ‘\0‘; return(count); } /* 如果行过长重新输入 */ if (c == ‘\n‘) { printf("smallsh:input line too long\n"); count=0; printf("%s ",p); } } }
其中的头文件samllsh.h内容为
#include <stdio.h> #define EOL 1 /* 行结束 */ #define ARG 2 #define AMPERSAND 3 #define SEMICOLON 4 #define MAXARG 512 /* 命令行参数个数的最大值 */ #define MAXBUF 512 /* 输入行的最大长度 */ #define FOREGROUND 0 #define BACKGROUND 1
原文地址:https://www.cnblogs.com/xqn2017/p/8886195.html
时间: 2024-10-04 05:12:06