初次接触linux系统编程
2016-06-22 18:59
351 查看
初次接触linux系统编程
一、背景
第一次接触linux系统编程,先从最简单的做起,首先探索一下more命令的实现方法。more命令使用起来并不复杂,先在命令行中输入more,会得到下面的反馈信息。
即more的使用方法是more+选项+名称。我在这里先忽略掉选项,只实现more来分页查看文件内容。(只是more最简单的查看文件内容的功能)
二、实现过程
1.more的运作方式
想实现more的功能,先看一下more的运作方式。在这里拿/etc/passwd以作演示。查看的过程这里就不截图了。首先如果文件无法打开的话(如果文件有问题,fopen()函数会返回空指针。磁盘满、文件名非法、存取权限不够或者硬件问题都可能导致文件打不开),必须要在屏幕标准输出一段警告语来警告文件无法打开。如果文件可以正常打开,那么more命令会首先显示文件的部分信息,同时会给出一个More的反白的字符并且后面跟有查看的百分比。此时若输入(1)q:会退出查看页面(2)空格:会显示部分信息(与第一次显示的行数相同)(3)Enter:会显示一行信息。
2.初次实现
第一次尝试系统编程,对照more的功能编出了这样的程序。说起来不好意思,其中主函数main的显示参数及其个数的用法我是第一次使用,之前在C的学习中并未见过如此用法,可见自己真是疏于实践了,这么有用的东西之前都没有掌握好,在这里通过这个实践很快就掌握其用法了。这段代码的功能还很残缺。几个比较大的问题:1.没有提示more的反白醒目字体。2.在q与space键入后,必须按Enter键才可以继续执行命令。3.Enter命令键入后存在问题:文件信息是隔行显示的。
3.修正
这次修改添加了more的反白提示字。并且修正了之前的用Enter键隔行显示的bug。添加反白提示字很简单,只需要在see_more函数中添加一段代码。而隔行显示是因为在more函数中多了一行else命令,导致并未输出接下来的一行而被下一行在line中取代了。
三、总结
这段程序使我对系统编程有了一点点的概念。就这种入门级的编程都耗费了我很多精力去编写,因为代码看上去都不是很难去理解,但自己去写可真是漏洞百出,特别头疼。而且最终写出的程序还很不如人意,接下来还有许多东西要去学习来完善它。但与此同时,我也变得不像之前对linux系统编程那样感到望而生畏遥不可及了。只要沉下心学习,总会有所收获。
一、背景
第一次接触linux系统编程,先从最简单的做起,首先探索一下more命令的实现方法。more命令使用起来并不复杂,先在命令行中输入more,会得到下面的反馈信息。
即more的使用方法是more+选项+名称。我在这里先忽略掉选项,只实现more来分页查看文件内容。(只是more最简单的查看文件内容的功能)
二、实现过程
1.more的运作方式
想实现more的功能,先看一下more的运作方式。在这里拿/etc/passwd以作演示。查看的过程这里就不截图了。首先如果文件无法打开的话(如果文件有问题,fopen()函数会返回空指针。磁盘满、文件名非法、存取权限不够或者硬件问题都可能导致文件打不开),必须要在屏幕标准输出一段警告语来警告文件无法打开。如果文件可以正常打开,那么more命令会首先显示文件的部分信息,同时会给出一个More的反白的字符并且后面跟有查看的百分比。此时若输入(1)q:会退出查看页面(2)空格:会显示部分信息(与第一次显示的行数相同)(3)Enter:会显示一行信息。
2.初次实现
第一次尝试系统编程,对照more的功能编出了这样的程序。说起来不好意思,其中主函数main的显示参数及其个数的用法我是第一次使用,之前在C的学习中并未见过如此用法,可见自己真是疏于实践了,这么有用的东西之前都没有掌握好,在这里通过这个实践很快就掌握其用法了。这段代码的功能还很残缺。几个比较大的问题:1.没有提示more的反白醒目字体。2.在q与space键入后,必须按Enter键才可以继续执行命令。3.Enter命令键入后存在问题:文件信息是隔行显示的。
3.修正
这次修改添加了more的反白提示字。并且修正了之前的用Enter键隔行显示的bug。添加反白提示字很简单,只需要在see_more函数中添加一段代码。而隔行显示是因为在more函数中多了一行else命令,导致并未输出接下来的一行而被下一行在line中取代了。
三、总结
这段程序使我对系统编程有了一点点的概念。就这种入门级的编程都耗费了我很多精力去编写,因为代码看上去都不是很难去理解,但自己去写可真是漏洞百出,特别头疼。而且最终写出的程序还很不如人意,接下来还有许多东西要去学习来完善它。但与此同时,我也变得不像之前对linux系统编程那样感到望而生畏遥不可及了。只要沉下心学习,总会有所收获。
相关文章推荐
- linux gzip gunzip
- centos忘记root密码解决方法
- linux下读取dmi信息的方法
- 每日一linux命令(17)-------whereis
- Linux查找文件内容的常用方法
- Linux 管理FTP 服务
- Linux设备驱动开发学习(4):字符设备驱动(未完)
- Linux - 将Crontab中的命令输出按照当前日期进行存储
- Linux静态库和共享库
- linux中fork()函数详解
- linux命令之crontab定时执行任务
- CentOS搭建内网yum仓库
- linux命令之scp远程文件复制
- 中文分词插件SCWS-1.2.3 在Linux环境的安装说明(包括php扩展)
- Centos部署Samba企业文件共享服务
- linux ps 查看进程内存使用情况
- Linux ps命令详解与示例说明
- CentOS7.0安装配置hadoop2.7.0
- Linux软件安装管理(二)-RPM命令管理
- Linux 安装与使用H2数据库