linux
文章平均质量分 75
Nou_Camp
这个作者很懒,什么都没留下…
展开
-
atexit函数
函数名: atexit 头文件:#include#include<stdio.h>#include<stdlib.h>void fun1(){ printf("fun1():");}void fun2(){ printf("fun2():");}void fun3(){ printf("fun3():");}void fun4(){ print原创 2017-04-24 19:29:41 · 358 阅读 · 0 评论 -
poll服务器
int poll(struct pollfd fds[], nfds_t nfds, int timeout); 头文件:poll.h 参数说明: fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这个函数之后,系统不会清空这个数组,操作起来比较方便;特别是对于socket连接比较多的情况下,在一定程度上可以提高处理的效率;这一点与se原创 2017-06-22 15:50:09 · 303 阅读 · 0 评论 -
Linux-条件变量
1.条件变量 条件变量描述临界资源内的状态。 条件变量是线程中的东西,就是等待某一条件的发生,和信号一样。 条件变量使我们可以睡眠等待某种条件出现。 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待”条件变量的条件成立”而挂起;另一个线程使”条件成立”(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起 返回值:成功返回0,失败返原创 2017-06-10 11:36:22 · 399 阅读 · 0 评论 -
Linux-信号(一)
1.信号的基本概念: ①信号是很短的消息 ②标准信号:标准信号没有给参数、消息或是其他相随的信息留有空间 ③通常使用一个数字来标识一个信号 ④信号可以被发送到一个进程或一组进程。 2.信号的目的: ①让进程知道已经发生了一个特定的事件 ②强迫进程执行它自己代码中的信号处理程序 a.很多应用程序提供自己的信号处理程序 b.系统也会定义一些缺省的信号处理程序信号举例原创 2017-06-12 15:51:27 · 344 阅读 · 0 评论 -
Shell脚本工具
1.grep 2.sed3.awk原创 2017-07-03 19:41:46 · 709 阅读 · 0 评论 -
Linux-终端、作业控制与守护进程
1.进程组 每个进程除了有一个进程ID之外,还属于一个进程组.进程组是一个或者多个进程的集合. 通常他们与同一作业相关联,可以接受来自同一终端的各种信号.每个进程组有一个唯一的进程组ID,每个进程组都可以有一个组长进程.标识为:其进程组ID等于其进程ID 组长可以创建一个进程组,创建其中的进程,然后终止.只要组内有进程,则该进程就存在,与组长存亡无关 2.作业 Shell分前后台控制的不是原创 2017-06-12 20:12:15 · 563 阅读 · 0 评论 -
Linux-信号(二)pending
1.阻塞信号 实际执⾏信号的处理动作称为信号递达(Delivery),信号从产⽣到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block )某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的⼀种处理动作。 每个信号都有两个标志位分别表⽰阻塞(block)和未决原创 2017-06-14 20:20:06 · 696 阅读 · 0 评论 -
线程安全与可重入函数
一、线程安全 线程安全:如果一个函数在同一时刻可以被多个线程安全的调用,就称该函数是线程安全的。不需要共享时,请为每个线程提供一个专用的数据副本。如果共享非常重要,则提供显式同步,以确保程序以确定的方式操作。通过将过程包含在语句中来锁定和解除锁定互斥,可以使不安全过程变成线程安全过程,而且可以进行串行化。 很多函数并不是线程安全的,因为他们返回的数据是存放在静态的内存缓冲区中的。通过修改接口,由转载 2017-06-14 21:42:46 · 385 阅读 · 0 评论 -
Linux-线程(一)创建 终止 等待线程
注意:在Linux上线程函数位于libpthread共享库中,因此在编译时要加上-lpthread选项。 1.线程概念 1)线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,原创 2017-06-15 10:53:08 · 455 阅读 · 0 评论 -
OpenSSL简介
1.OpenSSL简介1.1 简介SSL为了让网络通信更安全,简单来说就是在TCP之上做一个安全通信层,HTTP on SSL即是HTTPs。SSL交互过程还是很复杂的,牵扯到非对称加密和对称加密,以及复杂的交互过程,为此有人写了OpenSSL库。1.2 SSL和TLSSSL是TLS的前身,SSL从1.0、2.0到3.0一步步修订,但安全性都不是非常完美。知道后来SSL3.0摇身一变变成T...原创 2019-08-28 11:28:11 · 518 阅读 · 0 评论 -
基于shell脚本的进度条
Linux下建立一个shell文件bar.sh代码如下#!bin/bash #注意这里的#不是注释i=0str=""arr=("|" "/" "-" "\\")while [ $i -le 100 ]do #printf "\033[?25l" #隐藏光标 #printf "\033[41m" #红色背景 printf "\033[42m\033[1m" le原创 2017-06-28 16:56:09 · 434 阅读 · 0 评论 -
Linux-死锁
1.什么是死锁? 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 2.死锁产生的四个必要条件 (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3)原创 2017-06-19 20:27:03 · 344 阅读 · 0 评论 -
Linux-管道
管道-pipe 在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为: · 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不像文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能原创 2017-06-16 15:31:19 · 504 阅读 · 0 评论 -
CRC校验
1.基本概念 CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。转载 2017-06-17 20:34:45 · 334 阅读 · 0 评论 -
NAT技术与代理服务器
1.NAT技术 简单的说,NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共IP地址紧缺的问题。 2.NAT实现方式 NAT的实现方式有三种,即静态转换Static Nat、动态转换D原创 2017-06-18 22:16:37 · 476 阅读 · 0 评论 -
路由算法
1.路由算法概念 路由算法,又名选路算法,可以根据多个特性来加以区分。算法的目的是找到一条从源路由器到目的路由器的“好”路径(即具有最低费用的路径)。算法设计者的特定目标影响了该路由协议的操作;具体来说存在着多种路由算法,每种算法对网络和路由器资源的影响都不同;由于路由算法使用多种度量标准(metric),从而影响到最佳路径的计算。 2.常见的路由算法 LS算法 采用LS算法时,每个路由器必原创 2017-06-18 22:39:32 · 1543 阅读 · 0 评论 -
网络端口
1.网络端口 TCP/IP协议中的端口 端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。 端口分类 按端口号可分为3大类: (1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。 (2)注册端口(Regist原创 2017-06-19 15:18:19 · 516 阅读 · 0 评论 -
TCP中的URG和PSH
TCP的推送比特PSH(Push) PSH是TCP报头中的一个标志位,发送方在发送数据的时候可以设置这个标志位.当两个应用程序进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应.在这种情况下,TCP可以使用推送(push)操作.这时,发送端TCP将推送比特PSH置为1,并立即创建一个报文段发送出去.接收TCP收到推送比特置1的报文段,就尽快地(即”推送向前”)交付原创 2017-06-19 16:08:54 · 578 阅读 · 0 评论 -
TCP定时器
TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据。但是数据和确认都可能会丢失。TCP 通过在发送时设置一个定时器来解决这个问题。如果当定时器溢出时还没收到确认,它就会重传该数据。关键在于超时和重传策略,即怎样决定超时的时间间隔和如何确定重传的频率。 TCP定时器种类 对于每个TCP连接,TCP管理4个不同的定时器。 (1) 重传定时器用于当希望收到另一端的确认。 (原创 2017-06-19 16:32:13 · 349 阅读 · 0 评论 -
倒引符 eval和$()
1.倒引号 倒引号括起来的字符串被shell解释为命令行,在执行时,Shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。 例如: “echo current directory is pwd ” “ current directory is /home/lichao/bite/shell” 2.$() ()中放的是命令,相当于‘‘,例如todaydate=( )中放原创 2017-06-26 19:59:03 · 674 阅读 · 0 评论 -
TCP握手和挥手
二、TCP连接的建立和终止1、建立连接协议 (1) 请求端发送一个SYN段指明客户打算连接的服务器的端口,隐疾初始序号(ISN),这个SYN报文段为报文段1。 (2) 服务器端发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。 (3) 客户必须将确认序号设置为服务器的ISN加1以原创 2017-06-19 17:05:26 · 289 阅读 · 0 评论 -
服务端和客户端之文件加密传输
1.前言1.1 why?闲来无事,自己研究了一下服务端与客户端之间的文件传输,主要是服务端创建套接字开启监听并等待客户端的连接(TCP),在TCP协议上,为了安全我使用了TLS1.2进行加密通信(OpenSSL库),同时为了文件内容的安全,我在服务端对文件进行了加密(AES),客户端接收到文件后在对其解密。2.2 硬件我用的电脑系统是ubuntu 16.04,不是windows,下面的代码...原创 2019-09-03 20:28:41 · 2843 阅读 · 0 评论