标签:linux网络编程 set too 传递 get 程序 基本 文件 too long
本节主要介绍一个进程控制的实例,功能就是在前台或者后台接收命令并执行命令,还能处理由若干个命令组成的命令行,该程序命名为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
标签:linux网络编程 set too 传递 get 程序 基本 文件 too long
原文地址:https://www.cnblogs.com/xqn2017/p/8886195.html