自学内容网 自学内容网

系统回顾

系统回顾

目录

系统回顾

系统编程回顾

指令和常用工具(重点)

常用工具

makefile

文件操作(重点)、时间编程

多进程和IPC通信

多线程+同步互斥(重点)

网络编程

Select poll epoll


系统编程回顾

-- 如果没有安装ubuntu,请先安装ubuntu,这里就讲一下换源

原生的 Ubuntu 他的源(下载网址)太慢了
我们一般安装完毕 Ubuntu 第一件事把源 换成国内源
可以换成: 华为 清华 阿里 ……
找到你的软件列表->软件和更新

-- 找到软件和更新

alt text

alt text

alt text

-- 之后整体更新所有库和软件全部到最新版,执行该指令

sudo apt-get upgrade

指令和常用工具(重点)

执行的程序,ls pwd cd ……

  • chmod:修改权限

chmod +x ./test.c 给该文件执行权限
chmod 0777 ./test.c 给该文件全权限!

  • grep:在文本里面 查找字符串指令 

    alt text

  • 在指定的文件夹内搜索指定的代码行 

    alt text

-- find: 寻找指定文件

alt text

-- killall

alt text

常用工具

makefile

-- 核心特点:

  • 1、支持多线程并发编译!
  • 2、支持选择性编译修改过的文件(Keil 快编译)

-- 单线程花费 25.5 S

alt text

-- 多线程花费 7.8S make -j 线程数(取决于你的 CPU 的线程)

alt text

-- 动态库静态库: 这两个回头讲

-- 编译器 gcc:

  • -I(大写的 i): 指定外部头文件的路径
  • -l(小写 L):指定链接什么库
  • -L: 指定你链接库的路径

文件操作(重点)、时间编程

-- 文件操作你一定要会几个接口:

缓冲区:

fopen();//打开文件
fclose();//关闭文件
fread();//读取文件内容
fwrite();//写入文件内容
fseek();//偏移光标
ftell();//获取文件光标距离开头的位置
fseek(file,0,SEEK_END);
文件的大小 == ftell();
fseek(file,0,SEEK_SET);

非缓冲区:

open
close
read
write

  • 标准 缓冲区内部内存缓冲,不直接操作文件 不适合于内部底层系统的操作 只适用于普通文件的操作(mp3 mp4 text)
  • 非缓冲区直接操作文件本身 主要用于内部的文件操作: 套接字 进程通信 管道 设备文件:块设备 字符设备文件

-- 为什么要学习缓冲区和非缓冲区?

  • 缓冲区是内部有内存缓冲,

  • 非缓冲区是直接操作文件

多进程和IPC通信

-- 第一着重于守护进程:我们没讲

-- 信号:

  • signal();->注册信号之后
  • 可捕捉信号,进行回调(软中断)

fork
vfork
wait /waitpid
execl


-- 第二着重于:线程(重点)

多线程+同步互斥(重点)

-- 一个正常的项目都会用到的技术点!
哪有项目不是并发的!
线程项目最常用的技术之一!

  • 线程的创建:

pthread_create();最需你掌握 必须掌握的函数
能效非常的高,创建快,销毁快,轻量级进程 通信较为简单直接暴力->全局变量

  • 线程的正常退出:

pthread_exit();->尽量用该函数结束线程 线程的互斥和同步

  • 互斥锁:

pthread_mutex_init()
pthread_mutex_destory();
pthread_mutex_lock();
phtread_mutex_unlock();

  • 条件变量:
    int pthread_cond_destroy();
    int pthread_cond_init();
    pthread_cond_signal
    pthread_cond_wait

  • 信号灯:
    较少用,实际上信号量
    原则上你直接用 IPC 的信号量
    效果是一样的

-- 原则之间线程之间毫无关系,但是如果一个线程出现段错误,其他线程都会出错

  • 线程容易创建,难维护

网络编程

-- 驱动只有在做项目的时候会用到 浅浅给大家说一说接口 具体代码编写在项目中我们会重新写相关代码 前三周都用不到!只有在第四和第五周才会用到 用到时候我们到时候再复习一次!

-- 网络编程你需要掌握的接口:

  • 1: socket();//套接字创建
  • 2: bind();//绑定 IP 地址和端口号
  • 3: connect();//链接服务器
  • 4: listen();//监听 设置最大连接数
  • 5: accept();//接受客户的链接,阻塞型代码
  • 6: htons();//小端转大端(uint16_t)
  • 7: innet_addr();//Ip 字符串转大端的整型 IP

具体用法我们后续用到的时候 再一一给大家复习

Select poll epoll

你现在需要知道他的意义何在? 为什么要学习 这三个函数? 假如说面试问了你这个文件 你该如何解答!

  • 用一个线程 监控多个阻塞型的 IO 文件! 本来我做服务器 用多线程!
    这样占用资源太大,资源开销过高!
    危险性较高!
    我们需要 poll epoll select 监管这些客户文件!

  • 驱动中也会再次见到 poll 驱动监管 设备文件!


原文地址:https://blog.csdn.net/m0_71813740/article/details/143656973

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!