嵌入式学习日记 18

 课程任务:

   

IO编程
    多任务编程(进程、线程)
    网络编程
    数据库编程
    数据结构
    

Linux软件编程:


    1.Linux: PC三大操作系统之一 Linux是操作系统的内核 真正的操作系统:Ubuntu
        主要功能:    管理CPU
                    管理内存
                    管理硬件设备
                    管理文件系统
                    任务调度
    2.Shell:
        1.保护Linux内核(用户和Linux内核不直接操作)
        2.命令解释器(用户操作->Shell->内核->硬件设备->用户接收)
        3.Shell命令:
                man手册(帮助手册)
                1.标准命令
                2.系统调用
                3.库函数
                4.设备说明
                5.文件格式
                6.娱乐
                7.杂项
                8.管理员命令
                
            1.Shell基本命令:
                1.ls 2.cd 3.touch/rm 4.mkdir/rmdir 5.cp 6.mv
            2.Shell文件查看命令:
                1.cat:查看文件内容(以字符形式)
                    ASCII码文件(文件内容均能在终端现实的ASCII码字符)
                    .c .txt 文本文件
                    二进制文件(文件内容不能够在中断显示,或者显示乱码)
                    图片 视频 压缩包
                    示例:cat+filename
                2.od -c
                    以字符或ASCII码形式显示文件内容
                    示例:od -c filename
                3.head/tail
                    查看文件开头(结尾)内容(默认十行)
                    -n 指定显示行数
                    示例:head/tail filename
                        head/tail -n 行数 filename
            3.文件查找命令:
                1.find:
                    查找一个文件的路径
                    
                    示例:
                        find 文件夹 -name 文件名
                    
                    通配符:
                        *:匹配任意长度 任意字符的文件名 eg:txt.* *.txt
                        ?:匹配一位长度 任意字符的文件名
                        []:匹配一位长度 指定字符的文件名  eg:[1,2,3,4] [1-4] [^4]
                2.whereis:
                    查找指定内容的路径
                    
                    示例:
                        whereis 二进制程序名/软件名
                        
                3.grep:
                    查找文件中内容
                    
                    示例:
                        grep 'printf' stdio.h
                4.重定向:
                    将原本要输出在终端的内容重定向到一个文件中
                    
                    >>    追加重定向    在原来内容的基础上追加新的内容
                    >    覆盖重定向    将原来的内容覆盖掉
                
                    示例:
                        ls > file.txt
                        ls >> file.txt
                5.管道:
                    将前面命令的输出作为后续命令的输入
                    
                    示例:
                        ps -ef | grep bash
                6.其余命令: 
                    ps -ef 查看进程信息
                    echo    在终端打印内容
                    du        测试文件大小
                    -k/-m    按照kb或mb测试
                7.压缩解压命令:
                    .tar.gz
                    .tar.bz2
                    
                    1.压缩命令:
                        tar -zcvf 压缩文件包名.tar.gz 文件夹
                        tar -jcvf 压缩文件包名.tar.bz2 文件夹
                    2.解压命令:
                        tar -zxvf 压缩文件包名.tar.gz
                        tar -jxvf 压缩文件包名.tar.bz2
      

 IO:


      

 1.IO输入输出,操作对象是文件


      

 2.Linux文件类型:


            b    block        块设备文件
                            按块扫描设备信息的文件
                            存储设备
            c    character    字符设备文件
                            按字符扫描设备信息的文件
            d    directory    目录文件
                            存放文件
            -                普通文件
                            存放数据
                            图片、音视频、压缩包、文本文件
            l    link        链接文件
                            快捷方式
            s    socket        套接字文件
                            用来套接字通信
            p    pipe        管道文件
                            用来进程间通信
          

 3.普通文件:


                1.ASCII码文件
                    文件中所有的字符均能够在终端上显示的字符
                    文本文件、程序.c
                2.二进制文件
                    文件中存放数据的二进制形式
                    图片、音视频、压缩包
                ASCII码文件是特殊的二进制文件
            

4.标准IO、文件IO


                标准IO是库函数
                文件IO是系统调用
                
                系统调用:功能强大,应对复杂场景不够灵活
                库函数:针对系统调用的封装,使用方便灵活
                
                标准IO可以在Windows或者Linux平台使用
                文件IO只能在Linux系统平台使用
                
          

 5.标准IO


                getchar putchar scanf printf gets puts -> 标准IO
                
                #include
                
                fopen/fclose
                fgetc/fputc
                fgets/fputs
                fscanf/fprintf
                fread/fwrite
                fseek/rewind/ftell
          

 6.从文件中读写数据的流程


                打开文件 -> 读写文件 -> 关闭文件
                fopen                    fclose
                            fgetc/fputc        单个字符的读写
                            fgets/fputs        字符串的读写
                            fscanf/fprintf    格式化字符串的读写
                            fread/fwrite    二进制文件的读写
                            
            

7.函数接口:


                1.fopen
                    FILE *fopen(const char *pathname,const char *mode);
                    功能:
                        打开pathname对应的文件并与其建立一个流
                    参数:
                        pathname:要打开文件路径的字符串
                        mode:
                            r    只读        文件不存在报错        文件存在只读打开
                            r+    读写        文件不存在报错        文件存在读写打开
                            w    只写        文件不存在创建        文件存在将文件清空,只写打开
                            w+    写读        文件不存在创建        文件存在将文件清空,写读打开
                            a    追加只写    文件不存在创建        文件存在追加只写打开
                            a+    追加写读    文件不存在创建        文件存在追加写读打开
                    返回值:
                        成功返回打开的文件流指针
                        失败返回NULL
                2.fclose
                    int fclose(FILE *stream);
                    功能:
                        关闭文件,释放文件流指针
                    参数:
                        stream:文件流指针
                    返回值:
                        成功返回0
                        失败返回EOF(-1)
            

8.文件流:


                1.具有方向性(读写)
                2.具有连续性
                3.具有顺序性
                
                句柄:操作对象的一个抽象
            
            

9.特殊的三个流:


                stdin    标准输入流        从终端读取数据
                stdout    标准输出流        向终端打印数据
                stderr    标准出错流        向终端打印数据
                
                getchar scanf gets    通过stdin来读取终端数据
                putchar printf puts    通过stdout来在终端打印数据
                perror                通过stderr来向终端打印数据
            

10.标准IO缓存:


                缓存分为3类:
                    1.全缓存    4k
                        缓存区满刷新
                        
                        刷新条件:
                            1.缓存区满刷新(全缓存大小:4096)
                            2.使用fflush函数强制刷新
                            3.程序结束刷新
                            
                    2.行缓存    1k
                        遇到\n刷新
                        
                        刷新条件:
                            1.缓存区刷满刷新(行缓存大小:1024)
                            2.遇到\n刷新
                            3.fflush函数强制刷新
                            4.程序结束刷新
                            
                        与终端建立的缓存    stdin    stdout
                    3.不缓存    0k
                        直接刷新
                        
                        缓存区大小 0k        stderr
                        
                        人机交互、界面控制、出错处理
                    4.setvbuf
                        
                        功能:
                            改变一个流的缓存类型
                        参数:
                            stream:文件流指针
                            buf:指定缓存空间的首地址
                            mod:
                                _IONBF    不缓存
                                _IOFBF    全缓存
                                _IOLBF    行缓存
            

11.fputc


                int fputc(int c,FILE *stream);
                功能:
                    向流中写入一个字符
                参数:
                    c:写入字符的ASCII码值
                    stream:文件流指针
                返回值:
                    成功返回写入字符的ASCII值
                    失败返回EOF
                
                注意:
                    fputc只能写入单个字符

你可能感兴趣的:(linux,运维,服务器)