Linux网络编程学习 ----- 进程控制实例

Posted xqn2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络编程学习 ----- 进程控制实例相关的知识,希望对你有一定的参考价值。

本节主要介绍一个进程控制的实例,功能就是在前台或者后台接收命令并执行命令,还能处理由若干个命令组成的命令行,该程序命名为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网络编程学习 ----- 进程控制实例的主要内容,如果未能解决你的问题,请参考以下文章

Linux多线程编程与同步实例(基于条件变量)

Linux多线程编程与同步实例(基于条件变量)

一步步学习Linux多任务编程

Linux系统编程之进程概念

linux内核学习之六 进程创建过程学习

大数据技术之_16_Scala学习_11_客户信息管理系统+并发编程模型 Akka+Akka 网络编程-小黄鸡客服案例+Akka 网络编程-Spark Master Worker 进程通讯项目(示例代