高级编程 (1)

news2024/9/22 15:52:20

Linux软件编程:

1.Linux:


    操作系统的内核
        1.管理CPU
        2.管理内存
        3.管理硬件设备
        4.管理文件系统
        5.任务调度

2.Shell:


    1.保护Linux内核(用户和Linux内核不直接操作,通过操作Shell,Shell和内核交互)
    2.命令解释器

3.Shell命令: 


        man 手册(帮助手册)
        1.标准命令
        2.系统调用
        3.库函数
        4.设备说明
        5.文件格式
        6.娱乐
        7.杂项
        8.管理员命令

        command [-options] arg1 arg2 .. 

    1.Shell基本命令:


        1.ls 
        2.cd 
        3.touch/rm 
        4.mkdir/rmdir 
        5.cp 
        6.mv 

    2.文件查看命令:


        1.cat 
          查看文件内容(字符)

          ASCII码文件(文件内容均是能在终端显示的ASCII码字符)
                .c .txt 文本文件
          二进制文件(文件内容不能够在终端显示,或者显示乱码)
                图片 视频 压缩包

          示例:
            cat filename 

        2.od -c 
          以字符或ASCII码形式显示文件内容 

          示例:
            od -c filename 


        3.head/tail 
          查看文件开头/末尾内容(默认10行)

          -n    指定显示的行数

          示例:
            head/tail filename 
            head/tail -n 行数 filename 

    3.文件查找命令:


        1.find
          查找一个文件的路径 

          示例:
            find 文件夹 -name 文件名 
            find . -name '*.txt' 
            find . -name '??.txt' 
            find . -name '[1,2,3,4][1,2,3,4].txt' 

        通配符:
            *:匹配任意长度任意字符的文件名 
            ?:匹配一位长度任意字符的文件名
            []:匹配一位长度指定字符的文件名
            [1, 2, 3, 4] 指定字符 1 2 3 4
            [1-4] 指定字符 1 2 3 4
            [^2] 指定除了2以外的字符

        2.whereis 
          查找指定内容的路径 

          示例:
            whereis 二进制程序名/软件名

        3.grep 
          查找文件中内容 

          示例:
            grep 'printf' /usr/include/stdio.h 

    4.重定向:
        将原本要输出在终端的内容重定向到一个文件中

        >>  追加重定向      在原来内容基础上追加新的内容
        >   覆盖重定向      将原来的内容覆盖掉

        示例:
            ls > file.txt 
            ls >> file.txt 

    5.管道:
        将前面命令的输出作为后续命令的输入

        示例:
            ps -ef | grep bash 
    
    6.其余命令:
        ps -ef          查看进程信息 
        echo            在终端打印内容
        du -k/-m        测试文件大小
        
    练习:一条shell命令,将/usr/include/stdio.h文件后200行中与extern相关的内容记录到file.txt文件中
        tail -n 200 /usr/include/stdio.h | grep 'extern' > file.txt 

    7.压缩解压命令:
        .tar.gz 
        .tar.bz2 

        1.压缩命令:
            tar -zcvf 压缩文件包名.tar.gz 文件夹
            tar -jcvf 压缩文件包名.tar.bz2 文件夹

        2.解压命令:
            tar -zxvf 压缩文件包.tar.gz 
            tar -jxvf 压缩文件包名.tar.bz2 

        示例:
            tar -zcvf dir.tar.gz dir 
            tar -jcvf dir.tar.bz2 dir 

            tar -zxvf dir.tar.gz 
            tar -jxvf dir.tar.bz2 

linux下安装软件

8.让虚拟机上网:
        1.ifconfig
            查看网卡信息
        2.ping www.baidu.com
        
        3.将虚拟机设置为NAT模式:

            注意:
            NAT模式:windows有网,ubuntu也有网
            
            桥接模式:windows 和 ubuntu 网络独立 都有IP
            1.点击虚拟机
            2.点击设置
            3.点击网络适配器
            4.点击NAT模式
            5.点击确定
            
        4.配置ubuntu系统的ip地址为自动获取ip地址
            1.sudo vim /etc/network/interfaces
                打开网卡配置文件
            2.修改文件内容
                auto lo
                iface lo inet lookback
                
                auto ens33
                iface ens33 inet dhcp
            
            3.保存退出
            4.重启网络服务 
                sudo /etc/init.d/networking restart
    
            5.测试是否联通
    
    9.apt-get工具集:
        1.让虚拟机上网
        
    
    
        2.执行命令:
            1.sudo apt-get autoclean
                清除旧源
            2.sudo apt-get update
                更新新源
            3.sudo apt-get install -f
                重建软件源依赖关系
            4.安装软件
                sudo apt-get install wireshark
                安装wireshrak软件
                
                sudo apt-get install valgrind
                安装valgrind内存泄露检测工具
                
            5.卸载软件
                sudo apt-get remove 软件名
            6.查看是否安装成功
             dpkg -1 软件名
            7.安装
                sudo dokg -i 软件包名

IO

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 <stdio.h>

        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.具有顺序性

        句柄:操作对象的一个抽象

        valgrind --tool=memcheck --leak-check=full ./a.out

    9.特殊的三个流:
        stdin   标准输入流          从终端读取数据
        stdout  标准输出流          向终端打印数据
        stderr  标准出错流          向终端打印数据 

        getchar、scanf、gets 通过stdin来读取终端数据
        putchar、printf、puts通过stdout来向终端输出数据
        perror通过stderr来向终端输出数据

    10.标准IO缓存:
        缓存分为3类:
            1.全缓存  4k
                缓存区满刷新
                
                刷新条件:
                    1.缓存区存满刷新(全缓存大小:4096)
                    2.fflush函数强制刷新
                    3.程序结束/fclose刷新

                与文件建立的缓存

            2.行缓存  1k
                遇到\n刷新  

                刷新条件:
                    1.缓存区存满刷新(行缓存大小:1024)
                    2.遇到\n刷新 
                    3.fflush函数强制刷新
                    4.程序结束/fclose刷新

                与终端建立的缓存            stdin   stdout 

            3.不缓存
                直接刷新

                缓存区大小 0k               stderr

                人机交互、界面控制、出错处理

            4.setvbuf
              int setvbuf(FILE *stream, char *buf, int mode, size_t size);
              功能:
                改变一个流的缓存类型
              参数:
                stream:文件流指针
                buf:指定缓存空间的首地址
                mode:
                    _IONBF  不缓存
                    _IOLBF  行缓存
                    _IOFBF  全缓存
                size:
                    设定缓存区的大小
              返回值:
                成功返回0 
                失败返回非0 

ASCII码表 空格对应32

                       a  97      \0 对应0   0对应48

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1431140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速理解复杂系统组成学习内容整合

目录 一、复杂系统组成 二、接入系统 (Access System) 三、应用系统 (Application System) 四、基础平台 (Foundation Platform) 五、中间件 (Abundant External Middleware) 六、支撑系统 (Supporting System) 参考文章 一、复杂系统组成 复杂系统是由多个相互关联、相…

【c++】vector用法详解

vector用法详解 vector定义vector容器的构造函数vector容器内元素的访问1.通过下标 [ ]来访问2.通过迭代器来访问3.通过范围for来访问 vector常用函数的用法解析1.size()2.clear()3.capacity()4.reserve()5.resize()6.shrink_to_fit()7.pop_back()8.push_back()9.erase()10.in…

TQ15EG开发板教程:使用vivado2023.1建立hello world工程

1:打开软件建立工程 2:使用vivado创建设计模块并生成bit文件 3:导出硬件平台&#xff0c;使用vitis建立工程 4:使用vitis创建应用程序项目 5:硬件设置与调试 1:打开软件建立工程 打开VIVADO2023.1 创建一个新的工程 输入项目名称和地址&#xff0c;下面那个选项为是否…

有关使用Lombok@Builder注解构建对象返回为空

目录 问题 原因 解决方案 问题 使用lombokBuilder注解构建对象返回结果为空 原因 Builder注解底层调用setter等方法赋值&#xff0c;你如果没加Data注解就赋值不上&#xff0c;idea也不会错误警示&#xff0c;运行也不会抛出异常&#xff0c;这个平时不注意漏掉这个点还真…

AI Partition(银灿U盘分区工具)V2.0.0.3

AI Partition(银灿U盘分区工具)V2.0.0.3.zip 复制链接下载吧 https://url20.ctfile.com/f/36743220-1017367709-67f1b9?p2024 (访问密码: 2024) 支持IS903B IS902E IS916 AI Partition(银灿U盘分区量产工具) 这个是银灿官方发布的最新版U盘分区工具&#xff0c;版本号V2.0.0…

开源浏览器Firefox:使用Docker本地部署并远程访问进行测试

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 部署Firefox二. 本地访问Firefox三. Linux安装Cpolar四. 配置Firefox公网地址…

实战打靶集锦-023-oscp

文章目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 探查ssh4.2 探查Apache4.2.1 爆破admin4.2.2 利用secret.txt 5. 提权5.1 枚举主机信息5.2 查看passwd文件5.3 枚举定时任务5.4 枚举可执行文件5.5 查看EXP5.6 Capabilities位5.7 Linpeas提权 靶机地址&#xff1a;ht…

[python]基于LSTR车道线实时检测onnx部署

【框架地址】 https://github.com/liuruijin17/LSTR 【LSTR算法介绍】 LSTR车道线检测算法是一种用于识别和定位车道线的计算机视觉算法。它基于图像处理和机器学习的技术&#xff0c;通过对道路图像进行分析和处理&#xff0c;提取出车道线的位置和方向等信息。 LSTR车道线…

深入理解网络通信和TCP/IP协议

目录 计算机网络是什么&#xff1f; 定义和分类 计算机网络发展简史 计算机网络体系结构 OSI 七层模型 TCP/IP 模型 TCP/IP 协议族 TCP/IP 网络传输中的数据 地址和端口号 MAC地址 IP 地址 端口号 为什么端口号有65535个&#xff1f; 综述 TCP 特性 TCP 三次握…

【Linux】统信服务器操作系统V20 1060a-AMD64 Vmware安装

目录 ​编辑 一、概述 1.1 简介 1.2 产品特性 1.3 镜像下载 二、虚拟机安装 一、概述 1.1 简介 官网&#xff1a;统信软件 – 打造操作系统创新生态 统信服务器操作系统V20是统信操作系统&#xff08;UOS&#xff09;产品家族中面向服务器端运行环境的&#xff0c;是一款…

外贸流程的基本流程图怎么画?这样画简单快速

外贸流程的基本流程图怎么画&#xff1f;随着全球化的不断深入&#xff0c;外贸行业逐渐成为了国家经济发展的重要支柱。对于许多企业和个人来说&#xff0c;掌握外贸基本流程是非常必要的。但是&#xff0c;很多人在初次接触外贸时&#xff0c;对于流程的各个环节并不熟悉&…

c语言--二进制和其他进制之间的转换

目录 一、前言二、二进制、十进制、十六进制、八进制的组成2.1二进制的组成2.2十进制的组成2.3八进制的组成2.4十六进制的组成 三、二进制转换为十进制3.1 二进制转换为十进制3.2十进制转换为二进制 四、二进制转八进制和十六进制4.1二进制转八进制4.2二进制转换为十六进制 五、…

【Iot】什么是串口?什么是串口通信?串口通信(串口通讯)原理,常见的串口通信方式有哪些?

串口通信原理 1. 串口2. 串口通信4. 波特率与比特率5. 帧格式3. 串口通讯的通讯协议3.1. RS2323.2. RS485 总结 1. 串口 串行接口简称串口&#xff0c;也称串行通信接口或串行通讯接口&#xff08;通常指COM接口&#xff09;&#xff0c;是采用串行通信方式的扩展接口。 串口可…

浅谈安科瑞消防产品在酒店行业的应用-安科瑞 蒋静

摘要&#xff1a;进入 21 世纪以来&#xff0c;随着网络技术的发展&#xff0c;世界经济呈现全球化趋势&#xff0c;作为消费者衣食住行的重要组成部分&#xff0c;酒店行业也是生活服务市场重要的组成部分。在经济发展的环境下&#xff0c;在旅游业兴起的趋势下&#xff0c;酒…

Multisim14.0仿真(四十七)基于74LS161计数器设计

一、74LS161简介: 74LS161是4位二进制同步计数器,该计数器能同步并行预置数据,具有清零置数、计数和保持功能,具有进位输出端。可串接计数器使用。 二、74LS161引脚定义及说明: CLR:为异步清零控制端。 LOAD:为同步置数控制端 ENP,ENT:为计数控制端 D , C , B , A :为…

如何提高销售线索的质量和数量?这篇文章教会您

提高销售线索质量和数量的方法有&#xff1a;一、优化网站和营销内容&#xff1b;二、利用社交媒体和网络营销&#xff1b;三、提供优质的客户服务和体验&#xff1b;四、定期的市场调研和数据分析&#xff1b;五、建立合作关系和联盟&#xff1b;六、持续学习和创新。通过这些…

多名汇友爆料:在Primemax平台怎么也提不了现!

近期&#xff0c;有多名汇友向我站爆料&#xff0c;称其交易的Primemax平台怎么也出不了金。多名用户在Primemax平台无法出金 据一汇友描述&#xff0c;骗子最初是通过Line加了她好友&#xff0c;聊天中&#xff0c;对方俨然一副阳光帅气的精英人士形象&#xff0c;然后套近乎获…

C++初阶:适合新手的手撕string类(模拟实现string类)

上次讲了常用的接口&#xff1a;C初阶&#xff1a;初识STL、String类接口详细讲解&#xff08;万字解析&#xff09; 今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.构造函数&#xff08;constructor)2.1构造函数2.1.1无参有参分开2.1.2利用缺省参数合起来 2.2拷贝构…

Vue 学习随笔系列九 -- 表格中插入图片、背景、自定义表头

表格中插入图片和icon 文章目录 表格中插入图片和icon一、如何插入图片1、代码2、效果 二、文字添加背景1、代码2、效果 三、表头悬浮提示语四、表头添加图标 一、如何插入图片 1、代码 <template><div><el-tablesize"small"borderv-loading"l…

WordPress每天发布60s插件

源码名称:WordPress每天发布60s插件 适用平台:WordPress Wordpress还是比较适合个人博客网站&#xff0c;这个60秒插件适合一些喜欢自动发新闻早报晚报人员 喜欢的赶紧下手。找 万能工具箱合集 小程序即可找到资源