![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
甜甜米奇妙妙屋
这个作者很懒,什么都没留下…
展开
-
Linux10.10 day23 I/O复用方法select
10.10 I/O复用方法 selecthttp协议 应用层 80tcp协议 传输层io复用方法:select poll epoll在不使用多线程多进程的情况下同时处理多个文件描述符需要使用I/O复用技术:1 客户端程序需要同时处理多个socket2 客户端程序需要同时处理用户输入和网络连接3 TCP服务器要同时处理监听socket和连接socket4 服务器要同时处理TCP请求和UDP请求5 服务器要同时监听多个端口,或者处理多种服务select系统调用:#include&l原创 2022-04-19 22:02:10 · 186 阅读 · 0 评论 -
Linux10.9 day22 http
10.9 httptcp 传输层协议|http 应用层协议 端口号 80 https www.baidu.com --> DNS \ -> 11.23.3.2 80 web服务器 --- 三次握手建立tcp连接 ---> 浏览器 ip原创 2022-04-19 22:01:14 · 192 阅读 · 0 评论 -
Linux9.26 day21 udp
9.26 udp上节回顾:tcp特点 面向连接的 可靠的 流式服务1 三次握手 四次挥手connect发起连接开始三次握手 close开始挥手2 应答确认 超时重传 滑动窗口 乱序重排 去重3 send recv 次数不对应 粘包(两次发送的数据被一次收取)多线程:主线程创建多个线程 将c交给各线程 主线程只负责accept()多进程:命令:netstat查看tcp连接的状态:time_wait状态发送缓冲区 接收缓冲区当前的字节数当前进程使用的端口号本节重点:原创 2022-04-19 21:59:17 · 282 阅读 · 0 评论 -
Linux9.12 day20 tcp协议特点
9.12 tcp协议特点tcp客户端编程流程:ser 服务器端socket()bind() ip+portlisten()accept()recv()send()close()cli 客户端socket()connect() 开始进行三次握手 建立连接send()recv()close() 开始进行四次挥手tcp协议特点:面向连接的 可靠的 流式服务udp协议特点:无连接 不可靠的 数据服握手挥手对于程序员透明 无法看到send() recv() 用户无法原创 2022-04-19 21:58:00 · 57 阅读 · 0 评论 -
Linux9.11 day19 tcp编程流程 tcp客户端
9.11 tcp编程流程 tcp客户端tcp客户端编程流程:ser 服务器端socket()bind() ip+portlisten()accept()recv()send()close()cli 客户端socket()connect()send()recv()close()代码实现:(ser.c)#include <stdio.h>#include <stdlib.h>#include <unistd.h>#incl原创 2022-04-19 21:55:14 · 369 阅读 · 0 评论 -
Linux8.29 day17 线程同步 条件变量 读写锁
8.29 线程同步 条件变量 读写锁线程同步:信号量 互斥锁 条件变量 读写锁(3)条件变量条件变量的使用必定伴随着互斥锁的使用条件变量代码实现:#include <pthread.h>int thread_cond_init(pthread_cond_t *cond,pthread_condattr_t *attr); //条件变量初始化int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex);原创 2022-04-19 21:52:30 · 56 阅读 · 0 评论 -
Linux8.28 day16 线程同步 信号量 互斥锁
8.28 线程同步 信号量 互斥锁线程:进程内部的一条执行路径(序列) 调度的基本单位进程:一个正在运行的程序 动态 资源分配基本单位用线程 同时做多个事情 利用多处理器的资源pcb 进程控制块 struct task_struct; pcb之间使用双向链表链接ps 对外只显示主线程的id 其他线程的不显示ps -eLf 显示进程所有的信息 显示出主线程和其他线程的idLinux系统线程实现的方式:Linux实现线程的机制非常独特。从内核的角度来说,它并没有线程这原创 2022-04-19 21:51:00 · 210 阅读 · 0 评论 -
Linux8.22 day15 线程
8.22 线程进程间通信(IPC):管道 信号量 共享内存 消息队列进程:一个正在运行的程序 动态 资源分配的基本单位线程:进程内部的一条执行路径(序列) 调度的基本单位多线程:多个线程并发运行 稳定性不及单线程pthread.h //使用线程需调用该头文件int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(start_routine) (void),void *arg); //创建线程pt原创 2022-04-19 21:49:38 · 46 阅读 · 0 评论 -
Linux8.21 day14 共享内存 消息队列
8.21 共享内存 消息队列共享内存:两个进程可以同时使用的一块空间ipcs可查看 (ipcs -m)使用共享内存基本上一定会用信号量共享内存示例代码:int shmget(key_t key,size_t size,int shmflg); //创建共享内存void* shmat(int shmid,const void *shmaddr,int shmflg); //链接进来 拿出指针int shmdt(cont void *shmaddr); //移除指针 删除映射关系 断开链接原创 2022-04-19 21:48:18 · 111 阅读 · 0 评论 -
Linux9.5 day18 网络编程
9.5 网络编程路由器:将两个不同的网络连接起来交换机:将主机与主机连接起来联网的目的:为了通讯IP地址:给因特网上的每个主机分配的一个在全世界范围内唯一的标识符 (Linux命令:ifconfig)分为IPV4和IPV6两种IP地址组成:网络号+主机号 (共32位)物理地址(MAC):48位 (也可以唯一标识主机) 不发生变化端口号:用来在一台主机上唯一标识一个应用程序(进程) (16位) (有些特殊端口号不可使用)网络协议:一组网络规则的结合 是我们共同遵守的约定或原创 2022-04-19 21:52:51 · 34 阅读 · 0 评论 -
Linux8.15 day13 信号量
8.15 信号量(1)概念信号量是一个特殊的变量,一般取正数值。它的值代表允许访问的资源数目。Р操作:获取资源时,需要对信号量的值进行原子减一当信号量值为0时,代表没有资源可用,Р操作会阻塞。V操作:释放资源时,需要对信号量的值进行原子加一!信号量主要用来同步进程!信号量的值如果只取0、1,将其称为二值信号量。如果信号量的值大于1,则称之为计数信号量。临界资源:同一时刻 只允许被一个进程或线程访问的资源临界区:访问临界资源的代码段(2)信号量使用操作信号量的接口介绍:int semg原创 2022-04-16 22:46:46 · 69 阅读 · 0 评论 -
Linux8.14 day12 管道
8.14 管道进程间通信(IPC):管道 信号量 共享内存 消息队列 套接字管道:有名管道:可以用在任意两个进程之间mkfifo fifo pipe()无名管道:只能用在父子进程之间(方便)管道特点:1 打开管道后 在内存中分配空间(大小永远为零 不在磁盘上写入 永远在内存中)2 向管道中写入数据 实际是写入在内存中3 读取 也是从内存中读取数据!4 写端关闭,读端read()返回值为0 (作为循环判断的退出条件)如果读端关闭 写端写入数据就会产生异常原创 2022-04-16 22:45:09 · 180 阅读 · 0 评论 -
Linux7.31 day11 mybash
bash 命令解释器 让系统与用户交互1.内置命令 cd bash 直接实现 -> 调用函数实现2.普通命令 fork + exec()bash基本功能步骤:1 bash 打印提示信息 [stu@localhost tmp]$2 fgets(buff) //用户输入数据 ls, cp a.c b.c ,ps -f3 解析命令 “cp”“a.c” “b.c”4 判断是内置命令 还是普通命令5 执行命令 1原创 2022-04-16 22:43:44 · 224 阅读 · 0 评论 -
Linux7.26 day10 exec 信号
系统调用:文件描述符 open read write close标准输入 0 stdin FILE*标准输出 1 stdout标准错误输出 2 stderrstruct file :r,w,count,偏移量,pos,inodeexec 替换 进程execl execlp execle execv execvp execve库函数原创 2022-04-16 22:42:19 · 584 阅读 · 0 评论 -
Linux7.24 day09 open
7.24 openfork复制进程僵死进程 :子进程先于父进程结束 父进程没有获取子进程的退出码进程控制块 进程描述符 PCB struct task_struct;win 打开文件:二进制 文本Linux不区分二进制和文本(man 1命令 2系统调用 3库函数)库函数:fopen fread fgets系统调用: 实现在内核中 是用户和内核之间的桥梁从用户态切换到内核态open read write close linux一切皆文件打开 读 写原创 2022-04-16 22:40:40 · 768 阅读 · 0 评论 -
Linux7.19 day08 fork
7.19fork复制进程PCB 进程控制块进程属性信息(存储在PCB中):pid=3344nameexit_codeuid父进程子进程:fork返回值不同 pid不一定连续 父进程(3345) 子进程(3347)父(2234)进程:2235=fork 子(2235)进程:0=fork每个进程都会有父进程#include <stdio.h>#include <stdlib.h> //exit(0)#include <unistd.h> /原创 2022-04-16 22:38:33 · 151 阅读 · 0 评论 -
Linux7.17 day07 基础知识
day07 基础知识回顾之前内容:1 内核版本 开源发行版本2 目录结构(文件系统)/根boot etc bin lib home root proc usr var …stu1 stu2stu1:家目录/ome/stu1cd~3 文件类型 普通文件 - 目标文件 d4 权限 r w x - chmod u/g/o5 基本命令 cd touch mkdir pwd ls原创 2022-04-16 22:36:46 · 950 阅读 · 0 评论 -
Linux 6.15 day04 gcc
进程管理: kill pkill &ps pg fgPCB:进程控制块gcc 编译c程序工具 .cg++ .cpp运算器 控制器 存储器 输入设备 输出设备预编译 编译 汇编 链接原创 2022-04-16 22:30:16 · 199 阅读 · 0 评论 -
Linux 6.5 day03 命令
进程:一个正在运行的程序进程控制块 PCBstruct task——struct;{ pid = 3345}pid(进程唯一标识符) 状态:就绪 运行 阻塞PID 子进程IDPPID 父进程IDCtrl+c 结束 Ctrl+z 停止命令:ps 显示在当前终端中所进行的进程sleep 阻塞进程 sleep 400 阻塞400秒kill 结束进程 kill -9 强制结束进程pkill 结束一组进程bg %1 从前台转移到后台fg %1 从后台转移到原创 2022-04-16 22:28:45 · 365 阅读 · 0 评论 -
Linux 5.24 day02 基本命令
Linux day02目录结构:根目录家目录 /home/stu /home/xiao(Linux 多用户)…man 查看帮助文档 1 命令 2 系统调用 3 库函数…文件查看命令cat 查看文件 合并文件 向文件中输入数据more 分屏幕查看文件 按q键退出 空格 翻页 回车 按行显示less 查看文件内容 反复查看文件 方向键 上下查看head 显示文件前n行 (默认情况前十行)tail 显示文件末尾n行(eg:tail原创 2021-06-22 19:05:04 · 38 阅读 · 0 评论 -
Linux 5.22 day01
Linux系统基本命令 编译链接 调试 库文件进程 fork exec 信号进程间通讯 : 管道 信号量 共享内存 消息队列 套接字线程 :线程安全 同步网络编程: tcp/udp http select poll epoll lievent只有在家目录才有创建文件的权限touch :创建文件rm :删除文件pwd :查看当前位置cd ~:回到家目录mkdir c215chmod u+x file 文档文件普通文件d 目录(文原创 2021-06-22 19:02:27 · 38 阅读 · 0 评论