《Linux软件编程》的初步认识

一,Linux的认知:

Linux 实际上来说是操作系统的内核,ubuntu是操作系统(包括redhat,centos,freebsd等)

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

shell在linux内核外保护内核,用户不直接操作linux内核,而是通过操作shell,shell和内核交互。以防止不当的操作导致操作系统的崩溃。还作为命令解释器。


二,shell命令:

man 手册: 1.标准命令 2.系统调用 3.库函数 4.设备说明 5.文件格式 6.娱乐  7.杂项 8.管理员命令
1.基本命令: ls  ;  cd  ;  touch/rm  ;   mkdir/rmdir    ;   cp   ;   mv
2.文件查看命令:1.cat : 查看文件内容(字符);ASCII码文件(内容在终端显示的是ASCII字符)
                                     .c   .txt 文本文件
           拓展:二进制文件(文件内容不能在终端显示,或者显示的是乱码)
                                      图片,视频,压缩包

         2.od -c :以字符或者ASCII码形式显示文件
         3.head/tail :查看文件 开头/末尾 内容(默认十行)   -n 查看n行
            eg:head/tail  filename           head/tail  -n(行数) filenam 

3.文件查找命令:1.find   查找一个文件的路径   eg:find 文件夹 -name 文件名
                 eg;find .(当前文件目录)-name  '*.txt'
                           通配符(配合使用的):* --- 匹配任意长度字符的文件名
                           ?---- 匹配一位长度任意字符的文件名 ; 【】匹配一位长度的指定字符的文件名
                           【1,2,3...】匹配指定字符的文件名  【1-4】1到4的文件名
                           【^2】除了2以外的字符
                   2.whereis:查找指定内容的路径           eg:二进制 程序名/软件名
                   3.grep:查找文件中内容                        eg:grep ‘printf’ stdio.h

4.重定向: 将原本要输出在终端的内容重定向到一个文件中
       >> 追加重定向:在原定向内容的基础上追加新的内容
         > 覆盖重定向:将原来内容覆盖掉
         eg : ls  >>(>)  file.txt

5.管道: 将前面命令的输出作为后续命令的输入
              eg:ps - ef | grep bash

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

7.压缩解压命令:Linux中的压缩包形式:.tar.gz    .tar.bz2
               压缩名令:tar -zcvf   压缩文件包名.tar.gz 文件夹
                                 tar - jcvf   压缩文件包名.tar.bz2 文件夹
               解压命令:tar - zxvf  解压文件包名.tar.gz 文件夹
                                 tar - jvxf   解压文件包名.tar.bz2 文件夹

8.让虚拟机上网:1.ifconfig(查看网卡信息)
                            2.ping www.baidu.com (检测linux是否可以上网)

NAT模式:Windows有网,Ubuntu就有网                 桥接模式:Windows和Ubuntu网络独立


三,虚拟机连上网的步骤:

a.将虚拟机设置为NAT模式:点击"虚拟机"->点击"设置"->.点击"网络适配器"->选择"NAT模式"->点击"确定"
b.

1.sudo vim /etc/network/interfaces
              打开网卡配置文件
2.修改文件内容为:
                auto lo 
                iface lo inet loopback 

                auto ens33 
                iface ens33 inet dhcp 
3.保存退出
                ESC
                :wq
4.重启网络服务
                sudo /etc/init.d/networking restart 
5.测试与百度是否连通
                ping www.baidu.com 

9.apt - get 工具集:自动下载软件,能够分析软件的依赖关系
        1.设置apt - gte 工具的源:1.让虚拟机上网
                                        2.在Ubuntu左侧找到"Ubuntu Software"
                                        3.在Ubuntu上方找到"Ubuntu Software" 右键选择"Software & Updates"
                                        4.DownLoad Form 选择 "Others" -> "China" -> "mirrors.aliyun.com"

         2.执行命令: 1.sudo apt-get autoclean,清除旧源
                             2.sudo apt-get update , 更新新源
                             3.sudo apt-get install -f ,重建软件源依赖关系
                             4.安装软件  sudo apt-get install wireshark (安装Wireshark软件)
                                                sudo apt-get install valgrind (安装valgrind内存泄露检测工具)

                             5.卸载软件: sudo apt-get remove 软件名 
                             6.查看是否安装成功:  dpkg -l 软件名
                             7.安装:sudo dpkg -i 软件包名.deb


四,IO:输入输出   :

1. 操作对象-->文件

2.linux文件类型:

        b   block       块设备文件
                        按块扫描设备信息的文件
                        存储设备

        c   character   字符设备文件
                        按字符扫描设备信息的文件 

        d   directory   目录文件 
                        存放文件

        -               普通文件 
                        存放数据
                        图片、音视频、压缩包、文本文件

        l   link        链接文件 
                        快捷方式

        s   socket      套接字文件
                        用来套接字通信

        p   pipe        管道文件
                        用来进程间通信
             2.

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

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


五,标准IO(有缓存的):

eg:getchar putchar scanf  printf gets puts ...等-->标准IO
主要学习的有:fopen/fclose ; fgetc/fputc ; fgets/fputs ; fscanf/fprintf ;fread/fwrite 
fseek/rewind/ftell

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

2.函数接口:

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)

3.文件流:1.具有方向性(读写)    2.具有连续性    3.具有顺序性
              句柄:操作对象的一个抽象化
 valgrind --tool=memcheck --leak-check=full ./a.out  检查内存是否流失

4.特殊的三个流(不需要fopen就已经打开i的流):
stdin 标准输入流(从终端读取数据)   ;  stdout 标准输出流(从终端输出数据)   ;  stderr 标准出错流(从终端数据)
-------和终端建立的三个流

5.标准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 

      .5.fputc 
       int fputc(int c, FILE *stream);
       功能:
        向流中写入一个字符
       参数:
        c:写入字符的ASCII码值
        stream:文件流指针 
       返回值:
        成功返回写入字符的ASCII码值
        失败返回EOF
       注意: 1.fputc只能写入一个字符,写入多个字符需要多次调用fputc  2.fputc只能写入字符

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于WordPress开发微信小程序2:决定开发一个wordpress主题

上一篇:基于WordPress开发微信小程序1:搭建Wordpress-CSDN博客 很快发现一个问题,如果使用别人的主题模板,多多少少存在麻烦,所以一咬牙,决定自己开发一个主题模板,并且开源在gitee上&#xff…

redis 6.x集群搭建

redis6集群搭建 安装文件下载 redis-6.2.6.tar.gz 编译 tar -zxvf redis-6.2.6.tar.gz cd redis-6.2.6/ make MALLOClibc make install PREFIX/opt/soft/redis复制可执行文件 cp /opt/soft/redis/redis-cli /usr/bin/redis-cli cp /opt/soft/redis/redis-server /usr/bi…

2024 Flutter 重大更新,Dart 宏(Macros)编程开始支持,JSON 序列化有救

说起宏编程可能大家并不陌生,但是这对于 Flutter 和 Dart 开发者来说它一直是一个「遗憾」,这个「遗憾」体现在编辑过程的代码修改支持上,其中最典型的莫过于 Dart 的 JSON 序列化。 举个例子,目前 Dart 语言的 JSON 序列化高度依…

2024 年, Web 前端开发趋势

希腊哲学家赫拉克利特认为,变化是生命中唯一不变的东西。这句话适用于我们的个人生活、行业和职业领域。 尤其是前端开发领域,新技术、开发趋势、库和框架不断涌现,变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方…

Vue2+ElementUI 弹窗全局拖拽 支持放大缩小

拖拽组件 dialogDrag.vue <template><div></div> </template> <script>export default {name: dialogDrag,data() {return {originalWidth: null,originalHeight: null}},created() {this.$nextTick(()>{this.dialogDrag()})},mounted() {}…

业务流程自动化平台在制造业应用案例,助力业务自动化、智能化

捷昌驱动成立于2000年&#xff0c;并于2018年9月在上海证券交易所上市&#xff0c;是一家专注于线性驱动产品研发、生产及销售的科技集团。 公司整合全球资源&#xff0c;为智慧办公、医疗康护、智能家居、工业自动化等关联产业提供驱动及智能控制解决方案&#xff0c;以科技驱…

一站式在线协作开源办公软件ONLYOFFICE,协作更安全更便捷

1、ONLYOFFICE是什么&#xff1f; ONLYOFFICE是一款功能强大的在线协作办公软件&#xff0c;可以创建编辑Word文档、Excel电子表格&#xff0c;PowerPoint&#xff08;PPT&#xff09;演示文稿、Forms表单等多种文件。ONLYOFFICE支持多个平台&#xff0c;无论使用的是 Windows、…

了解UDP发送过快导致的问题和对应解决方案

在当今这个以数据为核心的时代&#xff0c;企业对于数据传输的速度和稳定性有着日益增长的需求。UDP凭借其低延迟和高效率的特性&#xff0c;在实时通信和大规模数据传输领域扮演着关键角色。然而&#xff0c;UDP的无连接特性和缺乏可靠性也给数据传输带来了挑战&#xff0c;尤…

通过html2canvas和jsPDF将网页内容导出成pdf

jsPDF参考&#xff1a;https://github.com/parallax/jsPDF html2canvas参考&#xff1a;https://github.com/niklasvh/html2canvas 或者 https://html2canvas.hertzen.com 思路 使用html2canvas将选中DOM生成截图对象将截图对象借助jsPDF导出为PDF文件 代码 这是一个示例&a…

MySQL事务隔离级别

1 引言 隔离性在实际操作中比看起来复杂很多。ANSI SQL标准定义了4种隔离级别。如果是数据库领域的新手&#xff0c;强烈建议在阅读特定的MySQL实现之前先熟悉ANSI SQL的通用标准。这个通用标准的目标是定义在事务内外可见和不可见的更改的规则。较低的隔离级别通常允许更高的…

Deepin如何开启与配置SSH实现无公网ip远程连接

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统&#xff0c;专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

计算机网络——链路层(1)

计算机网络——链路层&#xff08;1&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU)前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; [跳转到网站](https://www.captainbed.…

爬虫笔记(三):实战qq登录

咳咳&#xff0c;再这样下去会进橘子叭hhhhhh 以及&#xff0c;这个我觉得大概率是成功的&#xff0c;因为测试了太多次&#xff0c;登录并且验证之后&#xff0c;qq提醒我要我修改密码才可以登录捏QAQ 1. selenium 有关selenium具体是啥&#xff0c;这里就不再赘述了&#x…

Vue-49、Vue技术实现动画效果

1、首先&#xff0c;在Vue项目中的src/components文件夹下创建一个名为AnimatedBox.vue的文件。 2、编辑AnimatedBox.vue文件&#xff0c;添加以下代码&#xff1a; <template><div class"animated-box" click"toggle"><transition name&q…

低代码ERP系统助力企业成本优化,全面解析数字化转型之道!

在企业的日常运营中&#xff0c;成本管理是一项至关重要的任务。随着市场竞争的加剧和业务规模的扩大&#xff0c;传统的成本管理方式往往难以满足现代企业的需求。此时&#xff0c;ERP系统作为一种先进的企业资源管理工具&#xff0c;在成本管理领域展现出巨大的潜力和价值。它…

postman之接口参数签名(js接口HMAC-SHA256签名)

文章目录 postman之接口参数签名&#xff08;js接口签名&#xff09;一、需求背景二、签名生成规则三、postman js接口签名步骤1. postman设置全局、或环境参数2. 配置Pre-request Scripts脚本 四、Pre-request Scripts脚本 常见工作整理1. js获取unix时间戳2. body json字符串…

pdmodel从动态模型转成静态onnx

1.下载项目 git clone https://github.com/jiangjiajun/PaddleUtils.git 2.新建两个新的文件夹 第一个文件夹放两个必要文件 第二个文件夹可以设置为空&#xff0c;用来存放转换后的模型 如图&#xff1a; 3.在终端运行 python paddle/paddle_infer_shape.py --model_dir …

万户 ezOFFICE wpsservlet SQL注入漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

关于可变类型和不可变类型的探究

个人猜想&#xff08;很遗憾失败了&#xff09; 在硬盘或者系统中存在一个字符集 如果存在硬盘中&#xff0c;那么硬盘出厂的时候他的字符集所占用的空间就已经确定了。 如果存在于系统的话&#xff0c;硬盘应该在出厂的时候为系统设置一个存储系统字符集的地方。在安装系统…

List的模拟实现 迭代器

———————————————————— list与vector相比&#xff0c;插入、删除等操作实现的成本非常低&#xff0c;如果在C语言阶段熟悉理解过链表&#xff0c;那么现在实现起来list就显得比较简单&#xff0c;可以说操作层面上比vector更简洁&#xff0c;因为list没有扩…