Linux---More命令 初级实现
Linux: more
已实现:more filename , quit不需要回车
未实现:command | more 重定向 ,显示百分比
Waiting。。。
![](/assets/blank.gif)
![](/assets/blank.gif)
1 /* 2 Linux: more 3 已实现:more filename , quit不需要回车 4 未实现:command | more 重定向 ,显示百分比 5 Waiting。。。 6 */ 7 #include<stdio.h> 8 #define PAGELEN 24 9 #define LINELEN 512 10 void do_more( FILE * ); 11 int see_more(); 12 int main( int ac,char *av[] ){ 13 FILE * fp; 14 if( ac==1 ) 15 do_more( stdin ); 16 else{ 17 while( --ac ) 18 if( (fp=fopen(* ++av,"r"))!=NULL ){ 19 do_more( fp ); 20 fclose( fp ); 21 } 22 else{ 23 exit( 1 ); 24 } 25 } 26 return 0; 27 } 28 29 void do_more( FILE *fp ){ 30 char line[ LINELEN ]; 31 int num_of_lines = 0; 32 int see_more(),reply; 33 while( fgets( line,LINELEN,fp ) ){ 34 if( num_of_lines == PAGELEN ){ 35 reply = see_more(); 36 if( reply == 0 ){ 37 break; 38 } 39 num_of_lines -= reply ; 40 } 41 if( fputs( line,stdout )==EOF ){ 42 exit( 1 ); 43 }/* 标准输入输出 */ 44 num_of_lines ++; 45 } 46 } 47 48 int see_more(){ 49 int c; 50 system ("stty -F /dev/tty cbreak");/*打开/dev/tty作为输入终端,并且控制属性为不需要回车*/ 51 printf("\033[7m more?\033[m"); 52 while( (c=getchar())!=EOF ){ 53 if( c=='q' ){ 54 return 0; 55 } 56 if( c==' ' ){ 57 return PAGELEN; 58 } 59 if( c=='\n' ){ 60 return 1; 61 } 62 } 63 system ("stty -F /dev/tty -cbreak");/*恢复终端属性为需要回车*/ 64 return 0; 65 }
View Code
转载于:https://www.cnblogs.com/xxx0624/p/3360130.html
Linux---More命令 初级实现相关推荐
- linux运维初级课前实战随机考试题含答案(笔试+上机)
linux运维初级课前随机考试: 一.笔试部分: 1.开机配置服务自启动的文件路径是? 解答: /etc/rc.local 2.网卡配置文件的路径 解答: /etc/sysconfig/network ...
- linux的ping命令含义,Linux ping命令详解
Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性 基于IMCP协议 常见命令参数 -q 不显示任何传送封包的信息,只显示最后的结果 -n 只输出数值 -R 记录路由过程 ...
- linux who命令功能,Linux who命令详解
who 命令显示关于当前在本地系统上的所有用户的信息.显示以下内容:登录名.tty.登录日期和时间.输入whoami 显示您的登录名.tty.您登录的日期和时间.如果用户是从一个远程机器登录的,那么该 ...
- linux 垃圾箱位置,如何将Linux rm命令删除的文件放入垃圾箱
因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/userna ...
- linux中jstack命令详解,Linux jstack命令详解
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息. 如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack ...
- linux rm -rf删除文件,Linux rm命令详解
Linux rm命令 Linux rm命令用于删除一个文件或者目录 语法: rm [options] name... 参数解释: -f, --force 强制删除.忽略不存在的文件,不提示确认 -i ...
- linux ntpdate代码,Linux ntpdate命令详解
ntpdate命令用于同步更新互联网时间,或者NTP服务器时间 NTP服务器[Network Time Protocol(NTP)]是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源 ...
- linux wc -l效率,Linux wc命令详解
wc常见命令参数 wc -l : 统计行 wc -c: 统计字节数 wc -m:统计字符数,不能与-c同时使用 wc -w:统计字数 wc -L:打印最长长度 注意: wc 可以直接后面跟文件使用,但 ...
- linux常用命令(转载)
Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短 ...
- linux if 命令判断条件总结
linux if命令 关于文件属性的判断式 -a 如果文件存在 -b 如果文件存在,且该文件是区域设备文件 -c 当file存在并且是字符设备文件时返回真 -d 当pathname存在并且是一个目录时 ...
最新文章
- Memcached 数据缓存系统
- NB-IOT物联网平台是如何工作的
- js简单正则表达式验证密码
- CentOS7查看开放端口命令及开放端口号
- mfc用数组怎么存储句柄_指南手机存储不足怎么办?用好这份清理指南你的手机还能再战三年...
- TCP数据报结构以及三次握手(图解)
- 新能源电动汽车设计与生成
- 【转】常见算法在实际项目中的应用
- Go语言(Golang)超时机制
- ais文件还原到mysql_金蝶kis系列数据库(.ais)打开与账套恢复办法
- hexo+github搭建博客(超级详细版,精细入微)
- ipad分屏功能怎么开启_iPad 重大更新!14个新功能,每个都很实用
- 为什么C语言要有头文件(补充)
- Mac idea 导入maven 工程提示 Malformed \uxxxx encoding
- HTTP权威指南读后感
- 使用PyTorch进行知识蒸馏的代码示例
- python pyz_Python pyzfp包_程序模块 - PyPI - Python中文网
- ML (Chapter 10): 降维与度量学习
- bootstrap3- 导航条 - 慕课笔记
- 教程更新20220719