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网络编程学习 ----- 进程控制实例的主要内容,如果未能解决你的问题,请参考以下文章
大数据技术之_16_Scala学习_11_客户信息管理系统+并发编程模型 Akka+Akka 网络编程-小黄鸡客服案例+Akka 网络编程-Spark Master Worker 进程通讯项目(示例代