嵌入式Linux学习DAY18---IO编程

Linux进阶--软件编程

用户->shell->内核->硬件设备->用户

shell命令:

文件查看:

文件内容能在终端显示的文件叫做ascii码文件----代码,文章

文件内容不能在终端显示的叫做二进制文件------图片,视频,压缩包

od -c: 以八进制ascii的值显示内容

head:查看文件开头内容(默认10行)

head -n 5:查看头5行内容

tail: 末尾内容(和head类似)

man +N:查看对应功能

find 文件夹 -name 文件名---查找文件路径

通配符:*:匹配任意长度任意字符的文件名 例如 txt.*---匹配以txt开头的文件

?:匹配n个字符的文件(n取决与?的个数)

\[\]:匹配一位指定字符的文件,指定字符在\[\]内

通配符可用于所有命令

whereis:查找指定内容的路径 whereis 二进制文件/程序

grep '字符串' ----找相关的带字符串的名字

重定向

>>将终端内容重新定向到一个文件中,将原来的内容基础上追加新的内容

>将原来的内容覆盖掉

管道

ps -ef | grep bash

将前面命令输出作为后续命令输出。

ps -ef 查看进程命令

echo---在终端上打印内容

du-------测试文件大小

压缩:

tar -zcvf 压缩文件包名.tar.gz 文件夹

tar -jcvf 压缩包名.tar.bz2

解压:

tar -zxvf 压缩文件包.tar.gz

tar -jxvf 压缩文件包名.tar.bz2

linux配置网络

查看IP地址

1.ifconfig 查看IP地址

2.配置步骤

将虚拟机设置为NAT模式------NAT模式:通过操纵Windows上网使ubantu有网

桥接模式:ubantu直接操作网卡

点击虚拟机,点击设置,点击网络适配器,选择NAT模式,点击确定

3.配置IP地址

sudo vim/etc/network/interfaces网络配置

修改文件为:

auto lo

iface lo inet loopback

auto ens33

iface ens33 inet dhcp

4.保存并退出

5.重启网络

sudo/etc/init.d/networking restart

下载应用

apt-get工具集:

1.设置apt-get工具的源

2.找到software,选择software & updates

3.Download form 选择"other"->"china"->"mirrors.aliyun.com"

执行命令:1.sudo apt-get autoclean

2.sudo apt-get update

3.sudo apt-get install -f

4.安装软件

sudo apt-get install 软件名

5.卸载软件 sudo apt-get remove 软件名

6.查看是否安装成功 dpkg -l 软件名

7.dpkg -i 软件包名.deb

IO文件

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

2.Linux文件类型:

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

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

d directory 目录文件 存放文件

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

l link 连接文件 快捷方式

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

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

3.标准io,文件io

标准io是库函数,有缓存

文件io是系统调用,无缓存

系统调用:功能强大,应对复杂场景不够灵活

库函数 ;针对系统调用的封装,使用方便灵活

标准io 可以用于windows或者Linux平台使用

文件io只能在Linux系统平台使用

4.标准io语法函数

getchar putchar scanf printf gets puts

5.凑够文件中读写数据的流程:

打开文件->读写文件->关闭文件

fgetc/fputc 单个字符的读写

fgets/fputs 字符串的读写

6.函数接口:

fopen

使用示例:

cpp 复制代码
      FILE *a=NULL;

      a=fopen("文件名","mode");

FILE *fopen(const char *pathname,const char *mode);

功能:

打开pathname对应的文件并与其建立一个文件流指针

参数:

pathname:要打开文件路径的字符串

mode:

r 只读 文件不存在则报错,文件存在则打开

r+ 读与写 文件不存在则报错,文件存在则读写打开

w 写 文件不存在则创建,文件存在将文件内容清空,只写打开

w+ 写读 文件不存在则创建,文件存在将文件内容清空,只写读打开

a 追加只写 文件不存在创建,文件存在则追加只写打开

a+ 追加写读 文件不存在创建,文件存在则追加读写打开

7.文件流:

1.具有方向性

2.具有连续性

3.具有顺序性

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

fclose ----int fclose(FILE *stream);

功能:关闭文件,释放文件流指针

stream:文件流指针

和fopen成对出现

8.特殊的三个流

stdin: 标准输入流 从终端读取数据 关闭后不能读取数据(scanf,gets)

stdout: 标准输出流 向终端打印数据 关闭后不能输出数据(printf,puts)

stder: 标准出错流 向终端打印数据 关闭后不会报错

程序默认打开,无需用fopen打开

真正操作硬件的是Linux的内核,但用户操作的是shell

缓存:

1.全缓存

缓存区满刷新

刷新条件:

1.满4096kb

2.使用flash强制刷新

3.程序结束刷新

2.行缓存

刷新条件:

1.满1024kb

2.遇到\n强制刷新

3.使用flash强制刷新

4.程序结束刷新

与终端建立的缓存 例如: stdin stdout

3.不刷新

条件:0kb stder

用于人机交互、界面控制、出错处理等需要及时操作的条件

改变缓存类型的方法:

setvbuf(FILE *stream,char *buf,int mode,size_t size)

参数意义:

stream:数据流

buf: 缓存空间首地址

mode:缓存方式

size:缓存的字节大小

setvbuf(stdout,NULL,_IONBF,0); //设置为不缓存

setvbuf(stdout,a,_IOFBF,4096); //设置为全缓存

setvbuf(stdout,a, _IOLBF,1024); //设置为行缓存

读写文件

fputc:向流中写入一个字符

int fputc(int c,FILE *stream)

c:写入字符的ascii值

成功则返回字符的ascii值

相关推荐
pixcarp4 分钟前
GMP调度模型和GC垃圾回收机制解析
后端·学习·golang·内存管理·gc·gmp
·醉挽清风·10 分钟前
学习笔记—八股—操作系统
笔记·学习
x_x-F14 分钟前
深入浅出 Linux 网络核心:sk_buff 的内存与指针流转
linux·运维·网络
踏月的造梦星球10 小时前
DMDPC 学习:架构、部署、运维与调优
运维·数据库·学习·架构
潘正翔10 小时前
docker核心概念
linux·运维·服务器·docker·容器·centos·运维开发
weigangwin11 小时前
agent-workspace-linux 不是远程桌面:Linux AI 工作区的隔离边界验收
linux·xvfb·mcp·桌面隔离·权限边界·bubblewrap·agent-workspace
renhongxia111 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
Dovis(誓平步青云)12 小时前
远程办公软件文件传输实测:6 款工具的速度、稳定性和办公体验对比
linux·运维·服务器·后端·生成对抗网络
专注_每天进步一点点12 小时前
SLB(绑定弹性公网ip)-gateway-业务pod,gateway上出现reset by peer,业务pod上没有reset by peer
服务器·tcp/ip·gateway
GHL28427109013 小时前
unreferenced formal parameter 解决办法学习
学习