服务计算——Selpg
代码详情我的Github
1.概述
Selpg从标准输入或从作为命令行参数给出的文件名读取文本输入。它允许用户指定来自该输入并随后将被输出的页面范围。例如,如果输入含有 100 页,则用户可指定只打印第 35 至 65 页。这种特性有实际价值,因为在打印机上打印选定的页面避免了浪费纸张。另一个示例是,原始文件很大而且以前已打印过,但某些页面由于打印机卡住或其它原因而没有被正确打印。在这样的情况下,则可用该工具来只打印需要打印的页面。
2.函数分析
- Parser函数——用于解析命令行参数。
- processArgs函数——大量的错误检查以使它尽可能的健壮。
- usage函数——显示输入样例
- process_input函数选择所需的页并将其写至指定的目的地
3.参数解析
本次实验的参数解析运用了Go语言中的flag包来进行解析,举个例子
flag.IntVar(&p.start_page, “s”, -1, “首页号”)
当输入的参数没有-s的选项,start_page的值则默认为-1;倘若有-s选项,如-s=1或-s 1,则会自动识别-s之后的数字并将start_page赋值为1。
命令行flag的语法有如下三种形式:
-flag // 只支持bool类型
-flag=x
-flag x // 只支持非bool类型
关于更多flag的使用请点击链接。命令行参数解析
测试
为了测试方便,page_len的默认值改为5,输出的每页行数为5
测试文件(在第3、8、12和15行的尾部各有一个换页符/f):
1.
./selpg -s=1 -e=1 in
该命令将把“input_file”的第1页写至标准输出(也就是屏幕),因为这里没有重定向或管道。page_len为5,所以第一页打印了5行line,中间空行是因为换页符的存在。
2.
./selpg -s=1 -e=1 < in
该命令与示例 1 所做的工作相同,但在本例中,selpg 读取标准输入,而标准输入已被 shell/内核重定向为来自“input_file”而不是显式命名的文件名参数。输入的第 1 页被写至屏幕,输出效果同上。
3.
cat in | ./selpg -s=1 -e=1
“cat”的标准输出被 shell/内核重定向至 selpg 的标准输入。将第 1 页写至 selpg 的标准输出(屏幕)。
4.
./selpg -s=1 -e=1 in > out
selpg 将第 1页写至标准输出,标准输出被shell/内核重定向至“out”。输出没有在命令行显示,而是显示在输出文件中。
5.
./selpg -s=1 -e=-1 in 2> error
把end_page设为-1,发生错误,所有的错误消息被 shell/内核重定向至“error”。
6.
./selpg -s=1 -e=1 in > out 2> error
selpg 将第1页写至标准输出,标准输出被重定向至“out”, 发生的“错误”写至error(实际上没有错误,“done!”只是为了演示)。
7.
./selpg -s=1 -e=1 in > out 2>/dev/null
selpg 将第 1页写至标准输出,标准输出被重定向至“out”,丢弃错误信息。可见成功输出到out文件,而error文件为空。
8.
./selpg -s=1 -e=1 in > /dev/null
标准输出被丢弃
9.
./selpg -s=1 -e=1 in | wc
selpg 的标准输出透明地被 shell/内核重定向,成为“wc”的标准输入,显示第一页中包含的行数、字数和字符数。
10.
./selpg -s=1 -e=1 in 2> error | wc
同上,唯一不同就是错误消息被写至“error_file”。
11.
./selpg -s=1 -e=1 -l=2 in
输出的页长设置为2行,可见输出了一页为2行的信息。
12.
./selpg -s=1 -e=2 -f in
页面由换页符定界。第1页到第2页被写至 selpg 的标准输出。
13.
./selpg -s=1 -e=2 -d=lp1 in
由于缺少打印机,用cat命令代替lp命令,结果正确。
14.
./selpg -s=1 -e=2 in > out 2> error &
selpg后台运行正常。
服务计算——Selpg相关推荐
- 服务计算 | Selpg Golang实现
文章目录 selpg介绍 命令行准则 输入 输出 错误输出 执行 命令行参数 selpg参数介绍 Golang实现 数据结构 参数解析 校验参数 处理命令输入 readFile函数 程序测试 selp ...
- 服务计算作业三——CLI 命令行实用程序开发基础
服务计算作业三--CLI 命令行实用程序开发基础 18342138 郑卓民 本次作业gitee仓库链接(完整代码) 概述 CLI(Command Line Interface)实用程序是Linux下应 ...
- 西华大学计算机学院陈鹏,中国计算机学会CCF服务计算专委会走进西华大学
近日,"中国计算机学会CCFF服务计算专委走进高校活动"来到西华大学.此次活动邀请到CCF服务计算专委会副主任.天津大学冯志勇教授,南京大学马晓星教授,CCF服务计算专委会副秘书长 ...
- 使用c++制作微服务计算服务
其他链接 上次使用了go来制作微服务计算服务 go制作微服务计算服务 c++制作标准差服务计算 使用c++的计算服务速度是更快的,一下只是一个计算标准差的函数样例,和go服务之间进行交换可以使用更简单 ...
- 华为公有云服务-计算类(2)
华为公有云服务-计算类(2) 如何在公有云上购买使用ECS(网络配置)? ECS管理-登录windows系统 ECS ECS管理-登录Linux系统 ECS ECS管理 - 重装/切换操作系统 ECS ...
- 服务计算作业二——GO语言TDD实践报告
服务计算作业二--GO语言TDD实践报告 服务计算作业二--GO语言TDD实践报告 教程学习 为一个重复字符五次的函数编写测试,并先使用最少的代码让失败的测试先跑起来(核心概念) 把代码补充完整,使得 ...
- 无服务计算的未来和挑战: A Berkeley View on Serverless Computing
加州大学伯克利分校继 2009 年发布 <The Berkeley View on Cloud Computing>一举拨开云计算迷雾,十年后又一次发布了 <A Berkeley V ...
- 服务计算 -- 搭建私有云
服务计算 – 搭建私有云 文章目录 服务计算 -- 搭建私有云 下载VirtualBox及所需镜像 安装虚拟机 配置虚拟机存储位置 创建虚拟机内部虚拟网络 创建Base虚拟机(Centos为例) 链接 ...
- 无服务计算应用场景探讨及 FaaS 应用实战
简介: 无服务计算本身是一个概念或者理论模型,落地到具体技术上主要有函数即服务(FaaS)以及后端即服务(BaaS)两种形式,阿里云提供函数即服务 FaaS 产品. 作者 | 宋文龙(闻可) 阿里云 ...
- 服务计算——Vmware搭建私有云桌面
服务计算--Vmware搭建私有云桌面 下载 装载虚拟机 设置网络 安装图形界面 远程桌面 服务计算--Vmware搭建私有云桌面 下载 首先安装vmware,并下载好centos7的镜像文件,min ...
最新文章
- 拖动无标题栏的窗体,需要处理的三个事件
- conductor任务域
- java里面什么时候环境变量_Java的环境变量什么时候需要设置?
- java mac 转换 整形_JAVA的整型与字符串相互转换
- Java-break-continue
- flutter 一直loading_开源 | FLUI : Flutter 的组件扩展集
- Oracle 10g新特性
- linux 下pycharm 无法输入中文
- 第一次敲hdu蟠桃树和第二次的区别
- 软件测试员如何进行产品测试?
- starting Intent from ProcessRecord with revoked permission android.permission.CALL_PHONE 的错误原因
- 我们游戏后台架构学习
- Java Web学习日记(一)
- OpenCV实践小项目(一): 信用卡数字识别
- 报如下错误:android.util.AndroidRuntimeException: You cannot combine custom titles with other title featur
- 什么是子网掩码?怎么根据子网掩码得到网络号?
- webpack配置entry详解
- 在线广告原理:从橱窗到互联网广告核心交易模式——RTB
- 图片解码 java_Java 8实现图片BASE64编解码
- 机器人ccid认证_机器人认证来了