Linux软件编程以及IO输入输出——linux——day1

news/2024/10/18 0:29:17/

Linux软件编程以及其IO输入输出

Linux软件编程

linux是操作系统的内核

主要有以下几个功能:
①管理CPU
②管理内存
③管理硬件设备
④管理文件系统
⑤任务调度

shell指令

shell命令主要保护Linux内核(用户和Linux内核不直接操作,通过操作Shell,Shell和内核交互),其次也是命令解释器。

Shell命令:我们可以参考man手册

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

	command [-options] arg1 arg2 .. 

Shell基本命令:

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

这一块在C语言专栏中已经讲过,这里不再概述。

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 

8.让虚拟机上网:

    1.ifconfig查看网卡信息2.ping www.baidu.com 64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=51 time=32.7 ms64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=51 time=32.7 ms3.将虚拟机设置为NAT模式:NAT模式:Windows有网,Ubuntu就有网桥接模式:Windows和Ubuntu网络独立1.点击"虚拟机"2.点击"设置"3.点击"网络适配器"4.选择"NAT模式"5.点击"确定"4.配置Ubuntu系统的IP地址为自动获取IP地址1.sudo vim /etc/network/interfaces打开网卡配置文件2.修改文件内容为:auto lo iface lo inet loopback auto ens33 iface ens33 inet dhcp 3.保存退出ESC:wq4.重启网络服务sudo /etc/init.d/networking restart 5.测试与百度是否连通ping www.baidu.com 

9.apt-get工具集:

        1.自动下载软件2.能够分析软件的依赖关系1.设置apt-get工具的源: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.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/fputsfscanf/fprintffread/fwrite fseek/rewind/ftell 6.从文件中读写数据的流程:打开文件 -> 读写文件 -> 关闭文件fopen                   fclosefgetc/fputc     单个字符的读写fgets/fputs     字符串的读写fscanf/fprintf  格式化字符串的读写fread/fwrite    二进制文件的读写7.函数接口:1.fopenFILE *fopen(const char *pathname, const char *mode);功能:打开pathname对应的文件并与其建立一个文件流参数:pathname:要打开文件路径的字符串mode:r       只读            文件不存在报错,文件存在只读打开r+      读写            文件不存在报错,文件存在读写打开w       只写            文件不存在创建,文件存在将文件内容清空,只写打开w+      写读            文件不存在创建,文件存在将文件内容清空,写读打开a       追加只写        文件不存在创建,文件存在追加只写打开a+      追加写读        文件不存在创建,文件存在追加写读打开返回值:成功返回打开的文件流指针失败返回NULL2.fclose int fclose(FILE *stream);功能:关闭文件,释放文件流指针参数:stream:文件流指针返回值:成功返回0 失败返回EOF(-1)8.文件流:1.具有方向性(读写)2.具有连续性3.具有顺序性句柄:操作对象的一个抽象valgrind --tool=memcheck --leak-check=full ./a.out9.特殊的三个流: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.setvbufint setvbuf(FILE *stream, char *buf, int mode, size_t size);功能:改变一个流的缓存类型参数:stream:文件流指针buf:指定缓存空间的首地址mode:_IONBF  不缓存_IOLBF  行缓存_IOFBF  全缓存size:设定缓存区的大小返回值:成功返回0 失败返回非0 11.fputc int fputc(int c, FILE *stream);功能:向流中写入一个字符参数:c:写入字符的ASCII码值stream:文件流指针 返回值:成功返回写入字符的ASCII码值失败返回EOF注意:1.fputc只能写入一个字符,写入多个字符需要多次调用fputc2.fputc只能写入字符

http://www.ppmy.cn/news/1341733.html

相关文章

vue3 markdown编辑器推荐(maven-editor vditor tiptap )

最近项目需要用到markdown编辑器&#xff0c;使用了三种 maven-editor (http://www.mavoneditor.com/?spma2c6h.12873639.article-detail.9.aaad62affAKmTV)vditor (https://b3log.org/vditor/demo/index.html?utm_sourceld246.com)tiptap (https://github.com/ueberdosis/t…

网络安全之SSL证书加密

简介 SSL证书是一种数字证书&#xff0c;遵守SSL协议&#xff0c;由受信任的数字证书颁发机构&#xff08;CA&#xff09;验证服务器身份后颁发。它具有服务器身份验证和数据传输加密的功能&#xff0c;能够确保数据在传输过程中的安全性和完整性。 具体来说&#xff0c;SSL证…

QT 应用中集成 Sentry

QT 应用中集成 Sentry QT应用中集成 SentrySentry SDK for C/C注册 Sentry 账号QT 应用中集成 Sentry触发 Crash 上报 QT应用中集成 Sentry Sentry 是一个开源的错误监控和日志记录平台&#xff0c;旨在帮助开发团队实时捕获、跟踪和解决软件应用程序中的错误和异常。它提供了…

结构体的学习

结构体与共用体&#xff0c;枚举 1.数据类型复习&#xff1a; 2结构体. eg&#xff1b;统计全校同学信息 需要记录的点--- 姓名&#xff0c;班级&#xff0c;性别&#xff0c;成绩&#xff0c;年龄 统计名字&#xff1a;char s[ ] [ 100 ] { "Tmo" } …

02 使用jdk运行第一个java程序:HelloWorld

使用jdk运行第一个java程序 1 HelloWorld小案例1.1 编写流程1.2 错误示例 首先在CMD命令行里面&#xff0c;使用javac xxxx.java&#xff0c; 进行编译&#xff0c;其中会有报错&#xff1b; 然后生成xxxx.class 文件&#xff0c;然后使用java xxxx.class 进行运行。 1 HelloWo…

gRPC使用详解

起源特点主要优缺点应用场景组成部分使用方法SpringBoot集成gRPCVert.x集成gRPCNacos集成gRPC监控gRPC调用过程Java使用示例 起源 gRPC的起源可以追溯到2015年&#xff0c;当时谷歌发布了一款开源RPC框架&#xff0c;名为gRPC。gRPC的设计初衷是为了提供一种标准化、可通用和跨…

记录解决报错--vue前后端分离,接口401(Unauthorized)

1.场景 前端访问不了后端接口。报错401。 2.解决步骤 ①在页面console.log(111)查看走到代码的位置没有。&#xff08;走到了&#xff0c;没问题&#xff09; ②查看vue.config.js配置。这段配置就是vue访问api的url。&#xff08;没问题&#xff09; devServer: {port: 80…

[每周一更]-(第86期):NLP-实战操作-文本分类

NLP文本分类的应用场景 医疗领域 - 病历自动摘要&#xff1a; 应用&#xff1a; 利用NLP技术从医疗文档中自动生成病历摘要&#xff0c;以帮助医生更快速地了解患者的状况。 法律领域 - 法律文件分类&#xff1a; 应用&#xff1a; 使用文本分类技术自动分类法律文件&#xf…