【Linux编程实践教学(Bruce Molay)】第一章 Unix系统编程概述

一 Unix系统原理

-----学习一个函数一定要注意它的**传入值与返回值**具体内容,有时可根据函数功能猜测返回值的返回方式,这是有一定规范的。
  1. 计算机用操作系统来管理所有的资源,将不同设备与程序通过操作系统连接起来。从连接的角度来讲,键盘和显示卡直接连接到计算机的主板上,CPU和内存(设备)通过插槽直接连接到主板上,而操作系统相当于主板上的电路印刷板
  2. 操作系统也是程序,是一个特殊的程序,存储在内存中,该程序实现“将其他程序与设备连接起来”的功能。操作系统中最基本最重要的程序被称为内核kernel。 --内核与操作系统的区别:在这里插入图片描述

二 more命令实现

  1. more命令:打印输出文件内容 ;
    bc命令:将用户输入算是转化为逆波兰表达式传给远程dc,dc执行完后返回计算结果。

  2. Linux下main函数的参数:
    (1)argc:命令行参数的个数(包括最开始的可执行文件名称

    (2)argv(指针数组):字符指针的数组,每个元素都是一个指向字符串的字符指针,而字符串就是命令行中的每一个参数;
    数组长度与argc的值一样,代表命令行参数个数
    在这里插入图片描述

  3. fopen命令—<stdio.h>
    标准格式:FILE *fopen(char *filename, char *mode);
    其中的filename与mode都是指向字符串的指针
    FILE 是 <stdio.h> 头文件中的一个结构体,它专门用来保存文件信息。
    例子:FILE *fp = fopen("D:\\demo.txt","rb+");字符串常量就可作为指针传递
    返回NULL则说明打开失败。

  4. FILE *fp;
    FILE是在stdio.h中定义的结构体类型,封装了与文件有关的信息,如文件句柄、位置指针及缓冲区等,缓冲文件系统为每个被使用的文件在内存中开辟一个缓冲区,
    用来存放文件的有关信息,这些信息被保存在一个FILE结构类型的变量中,fp是一个指向FILE结构体类型的指针变量。
    要想该指针指向一个文件,并操纵它,则需要:fp=fopen(xxxx) ;输入,输出,错误流可直接赋给fp指针。

  5. fgets函数—详见:fgets详解
    原型:char* fgets(s,n,stdin);----如果读入错误或遇到文件结尾(EOF),则返回NULL.
    假设在控制台下,我们可以用fgets(…)替代gets(),读入键盘输入的信息,fgets()是安全的,因为不会像gets()有溢出的可能。
    比如 :输入 abc
    fgets(s,n,stdin)也会读入n-1个字符(第n个位置用来放置’\0’,存入s中)。但是只是从stdin流读入。
    在这里插入图片描述在这里插入图片描述

  6. fputs见博客:linux下C语言

  7. exit()函数与return
    exit命令:执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。
    具体区别:
    *(1)作用不同。exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程。而return是返回函数值并退出函数;
    *(2)语义层级不同。return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束;
    *(3)使用方法不用。return一般用在函数方法体内,exit可以出现在Shell脚本中的任意位置。
    总结

  8. gdb调试–
    info b; p x; n; r; b 9; delete 2-----------等等

  9. 如何在VS下向main中传入文件参数进行打开
    项目–》工程属性–》调试–》命令参数
    如果是相对路径的话,只能打开当前cpp文件所在目录之下的文件----格式如下:
    在这里插入图片描述
    绝对路径:可直接从<我的电脑>上复制绝对路径----win10 下路径是反斜杠’’(现在VS可智能识别,不用转义,即不用写’\’);linux下路径是‘/’

  10. 总结及思考
    more命令的实现中学到了:
    * main函数传参的知识以及远程调控,gdb调试
    * 标准输入流不仅仅代表键盘,输入流是可以重定向的(方式有|, <),
    * 各种读取输出函数,比如getc(),putc()函数等等
    * linux下有专门的文件**"/dev/tty"**来代表键盘与屏幕的输出与输入,可利用文件指针对改文件读写操作,相当于对键盘和屏幕进行读写操作(写相当于显示在屏幕上,读同理)。
    * 多行复制与粘贴的方法ndd,nyy,p
    * 如何不输入回车直接读入终端字符?----从标准输入不回车直接获取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值