Linux
alin Wang
sdn studing...
展开
-
alin的学习之路(Linux网络编程:九)(HTML,http协议)
alin的学习之路(Linux网络编程:九)(HTML,http协议)1. HTML简述1. 基本 html 网页结构<!doctype html><html> <head> <title> 网页标题678 </title> </head> <body> <!-- 这是一行注释 --> 网页身体1 网页身体2原创 2020-08-10 22:14:02 · 314 阅读 · 0 评论 -
alin的学习之路(Linux网络编程:四)(多路IO转接:select、poll、epoll)
alin的学习之路(Linux网络编程:四)(多路IO转接:select、poll、epoll)1. select1. select优化思路当select转接的文件描述符跨度过大时,每次都遍历文件描述符表显然会降低效率,因此要对其优化。优化思路:添加一个数组来存储要监听的文件描述符,直接遍历这个数组即可程序流程:创建监听套接字lfd = Socket()设置端口复用 setsockopt()Bind() 绑定ip和端口号Listen()设置最大监听个数定义fd_set rset,all原创 2020-08-02 21:11:38 · 351 阅读 · 0 评论 -
alin的学习之路(Linux网络编程:三)(高并发服务器-多线程、TCP通信时序状态、多路IO转接select概述)
alin的学习之路(Linux网络编程:三)(高并发服务器-多线程、TCP通信时序状态、多路IO转接select概述)0. 一些小的注意事项1. SIGCHLDSIGCHLD 只要子进程状态发生变化就会产生,不仅仅是子进程死亡,还有子进程暂停和继续SIGCHLD 默认处理动作是忽略用信号回收子进程时 要使用while循环回收多次 。原因是信号不支持排队,多个子进程结束只有一个信号。2. 线程和进程注意兄弟线程之间可以使用 pthread_join 回收进程仅父进程可以回收子原创 2020-08-01 18:42:48 · 295 阅读 · 0 评论 -
alin的学习之路(Linux网络编程:二)(三次握手四次挥手、read函数返回值、错误函数封装、多进程高并发服务器)
alin的学习之路(Linux网络编程:二)(三次握手四次挥手、read函数返回值、错误函数封装、多进程高并发服务器)1. 服务器获取客户端地址和端口号accept函数会返回客户端的sockaddr,通过使用inet_ntop()和ntohs()即可获取客户端地址和端口号char clt_IP[1024];clt_addr_len = sizeof(clt_addr);cfd = Accept(lfd,(struct sockaddr*)&clt_addr,&clt_addr_le原创 2020-07-30 22:29:10 · 267 阅读 · 0 评论 -
alin的学习之路(Linux网络编程:一)(网络模型、帧格式、socket套接字、服务器端实现)
alin的学习之路(Linux网络编程:一)(网络模型、帧格式、socket套接字、服务器端实现)1. 协议协议是一组规则,规定了如何发送数据。通信的双发都需要遵守该规则2. 网络分层结构模型1. OSI七层模型物:物理层数:数据链路层网:网络层传:传输层会:会话层表:表示曾应:应用层2. TCP/IP模型链:数据链路层(网络接口层):以太网帧协议,ARP协议网:网络层:IP协议,ICMP协议,IGMP协议传:传输层:TCP协议,UDP协议应:应用层:HTTP,ftp,n原创 2020-07-29 19:26:03 · 489 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:十)(互斥锁、读写锁、条件变量、信号量、哲学家就餐问题)
alin的学习之路(Linux系统编程:十)(互斥锁、读写锁、条件变量、信号量、哲学家就餐问题)1. 互斥锁 mutex1. 同步与互斥现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:都需要访问/使用同一种资源多个任务之间有依赖关系,某个任务的运行依赖于另一个任务这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题的。**互斥:**是指散布在不同任务之间的若干程序片断,当某个任原创 2020-07-25 19:39:28 · 557 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:九)(SIGCHLD、守护进程、线程)
alin的学习之路(Linux系统编程:九)(SIGCHLD、守护进程、线程)1. 可重入与不可重入函数不可重入函数:如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。满足下列条件的函数多数是不可重入(不安全)的:函数体内使用了静态的数据结构;函数体内调用了malloc() 或者 free() 函数(谨慎使用堆);函数体内调用了标准 I/O 函数。可重入函数:所谓可重入是原创 2020-07-24 19:47:30 · 314 阅读 · 0 评论 -
sleep与信号唤醒的问题
sleep与信号唤醒的问题内核对信号的处理方式内核处理一个进程收到的信号时机是在一个进程从内核态返回用户态时。所以,当一个进程在内核态下运行时,软中断信号并不立即起作用,要等待将返回用户态时才处理。(具体何时到到返回用户态的时间,下文会陈述)。信号的接收不是由用户进程来完成的,而是由内核代理。当一个进程P2向另一个进程P1发送信号后,内核接受到信号,并将其放在P1的信号队列当中。当P1再次陷入内核态时,会检查信号队列,并根据相应的信号调取相应的信号处理函数。信号的机制信号检测和响应时机刚才我们原创 2020-07-23 22:27:04 · 1937 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:八)(匿名映射、信号)
alin的学习之路(Linux系统编程:八)1. 匿名映射父子进程之间的通信如果用普通的共享存储映射会浪费很多的资源,而这些资源是没有必要去用到的,所以有了匿名映射匿名映射无需依赖一个文件即可创建映射区。同样需要借助标志位参数flags来指定。使用MAP_ANONYMOUS。int *p = mmap(NULL, 4, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);4"随意举例,该位置表示映射区大小,可依实际需要填写。MAP_原创 2020-07-22 20:29:00 · 385 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:七)(命名管道、共享存储映射)
alin的学习之路(Linux系统编程:七)1. 有名管道命名管道(FIFO)不同于无名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,这样,即使与 FIFO 的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过 FIFO 相互通信,因此,通过 FIFO 不相关的进程也能交换数据。命名管道(FIFO)和无名管道(pipe)有一些特点是相同的,不一样的地方在于:FIFO 在文件系统中作为一个特殊的文件而存在,但 FIFO 中的内容却存放在内存中。原创 2020-07-21 19:30:03 · 257 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:六)(进程、无名管道)
alin的学习之路(Linux系统编程:六)进程相关1. 父子进程的不同点子进程拥有自己唯一的进程号子进程没有继承父进程内存锁子进程的资源没有被初始化子进程的CPU计数器被重置为0子进程的阻塞信号集被初始化为空子进程没有继承信号量子进程没有继承父进程关联的记录锁子进程没有继承定时器子进程没有继承IO操作读时共享,写时拷贝仅当对数据进行写修改时才拷贝数据,优化了fork函数2.父子进程的执行顺序父子进程谁先执行谁后执行不确定。父子进程进程名一样,但进程号不同。终端相同。区分父原创 2020-07-19 21:17:18 · 261 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:五)(目录操作、进程相关概念)
alin的学习之路(Linux系统编程:五)(目录操作、进程相关概念)1. 目录操作1. 查看工作目录 getcwdchar *getcwd(char *buf, size_t size)功能: 获取当前工作目录(绝对路径)参数: buf 保存工作路径的缓冲区 size 指定buf可以存储字节数返回值: 成功 buf的起始地址 失败 NULL#include <stdio.h>#include <unistd.h>#de原创 2020-07-18 17:36:46 · 245 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:四)(Makefile,文件I/O)
alin的学习之路(Linux系统编程:四)(Makefile,文件I/O)编码格式的调整:visual stuio 中用的是GBK的编码,我们在Linux vim 里用的是 utf-8 编码。vim 的末行模式下::set fileencoding=utf8 // 将文件修改为 utf-8 编码 1.Makefile概述:Makefile是文件编译工具,方便源文件编译成可执行文件。Makefile 是一个文本文件,一个包含了编译规则的文本文件。在项目中敲击一个命令:make ,即可完成原创 2020-07-16 19:19:53 · 319 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:三)(vim,gcc,库,gdb)
alin的学习之路(Linux系统编程:三)(vim,gcc,库,gdb)1.vim的使用vim有三种模式:命令模式,末行模式,编辑模式光标的移动【命令模式】h 向左 ,j 向下,k 向上,l 向上移动到行首:^ 移动到行末:$移动到屏幕顶部:H 移动到屏幕中间:M 移动到屏幕底部:L移动到文件顶部:gg 移动到文件底部:G**自动调整格式:**G=gg剪切粘贴【命令模式】dd剪切一行,p粘贴到光标所在的下一行ndd 剪切多行,p粘贴到光标所在的下一原创 2020-07-15 20:21:25 · 187 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:二)(压缩、文件权限、vim)
alin的学习之路(Linux系统编程:二)1.压缩和解压命令tar.gz压缩:tar -cvf 压缩包名 文件名解压:tar -xvf 压缩包名 -C 解压到的路径tar.bz2压缩:tar -cjf 压缩包名 文件名解压:tar -xjf 压缩包名 -C 解压到的路径zip如果电脑没有zip需要下载sudo apt install zip压缩:zip 压缩包名(无后缀)文件名解压:unzip 压缩包名(可无后缀) -d 解压到的路径2.用户和用户组相关命令原创 2020-07-13 19:27:12 · 187 阅读 · 0 评论 -
alin的学习之路(Linux系统编程:一)(Linux基础命令)
alin的学习之路(Linux系统编程:一)1.Linux学习准备操作系统的作用向上给用户提供简单的操作计算机硬件的方式对下管理硬件承上启下程序运行在操作系统上,程序运行时的资源由操作系统提供,操作系统管理和监控运行的程序。Linux和Windows的区别系统函数不同(跨平台时要注意这一点)应用领域不同:Windows多用于娱乐和办公,Linux多用于服务器领域。目录结构不同:Windows有多个盘符,Linux所有文件都保存在根目录下。Linux内核和发行版内原创 2020-07-12 19:41:45 · 383 阅读 · 1 评论