linux
文章平均质量分 59
gilr
梅花香自苦寒来,
展开
-
基于信号量(Semaphore)的生产-消费模型和读-写锁
一、 Semaphore(信号量) Mutex变量是非0即1的,可看作一种资源的可用数量,初始化时Mutex是1,表示有一个可⽤用资源,加锁时获得该资源,将Mutex减到0,表示不再有可⽤用资源,解锁时释放该资源,将Mutex重新加到1,表示又有了一个可⽤用资源。 semaphore变量的类型为 int sem_init(sem_t *sem, int pshared, unsigned int原创 2017-04-07 00:18:07 · 559 阅读 · 0 评论 -
crond命令和crontab命令调研
一、crond 简介 crond是linux用来定期执行命令或指定程序任务的一种服务。安装完操作系统后,默认会启动crond任务调度服务。crond服务会定期检查系统中是否有要执行的任务。如果有要执行的任务则自动执行该任务。crond定时任务服务就像我们早上使用的闹钟一样。 查看crond服务状态: 命令: service crond status 启动crond服务:原创 2017-06-07 17:27:39 · 338 阅读 · 0 评论 -
守护进程
守护进程也称精灵进程,是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。linux大多数服务器就是用守护进程实现的。 linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互。其他进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户登录注销的影响,它们一直在运行,这种进程有一个名称叫守原创 2017-06-08 20:46:28 · 369 阅读 · 0 评论 -
Linux网络编程/poll服务器
一、编写poll服务器 对Pool服务器的了解: pollfd结构包含了要监视的event和发生的event,不在使用select”参数-值”传递的方式,同时,pollfd并没有最大数量限制。和select函数一样,poll返回后,需要轮询pollfd来获取就绪的描述符。 #include<stdio.h>#include<poll.h>int main(){ struct po原创 2017-06-30 15:59:53 · 389 阅读 · 0 评论 -
Linux 中shell脚本/eval调研
eval可以读取一连串的参数,然后按照参数特性来执行。参数数目不限,彼此之间用分号隔开。 eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令;如果命令中含有变量的间接引用,则保证间接引用的语义。也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。因此,eval命令适用于那些一次扫描无法实现其功能的变量。 eval 执行以下两个步骤:原创 2017-07-03 16:07:02 · 393 阅读 · 0 评论 -
ARP协议和arp脚本
一、ARP协议 —地址解析协议 在网络通信时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接弃。因此在通信前必须获得目的主机的硬件地址。ARP协议就起到这个作用。 源主机发出arp请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广原创 2017-06-12 16:13:27 · 642 阅读 · 0 评论 -
linux CRC校验
CRC即循环 冗余校验码:是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验实用程序库在数据存储和数据通信领域,为了保证数据的准确,就不得不采用检错的手段. 下面我们通过一个简单的例子来说明循环冗余检验的原理: 在发送端,先把数据划分为组,假定每组k个比特(也就是每组K为)。现假定待传送的数据M = 101001(k=6).CR原创 2017-06-12 17:10:32 · 1233 阅读 · 0 评论 -
linux/NAT技术与代理服务器调研
一、NAT技术 定义:NAT英文全称是 Network Address Translation,即网络地址转换,是一种IETF标准,允许一个机构以一个地址出现在Internet上。NAT将每个局域网节点的地址转换成一个Internet地址,反之亦然。 用途: 1)、连接到Internet,但却没有足够的公用Internet地址分配给内部主机。 2)、接到一个需要重新分配地址的ISP. 3)原创 2017-06-13 11:29:28 · 427 阅读 · 0 评论 -
linux网络编程/多线程多进程服务器与进程线程池
一、多进程服务器 1、服务器端代码: #include<stdio.h>#include<stdlib.h>#include<netinet/in.h>#include<sys/socket.h>#include<sys/types.h>#include<arpa/inet.h>#include<string.h>//./tcp_server 127.0.0.1 8080static原创 2017-06-26 00:17:23 · 562 阅读 · 0 评论 -
linux网络编程/tcp_server中server bind失败原因的调研
问题模型:server1为服务端,在本地的9999端口监听,server2相对server1是客户端,server2启动后首先向server1发起连接,然后再8888端口监听。程序代码不在列出。先后启动server1、server2,然后查看当前连接,如图1所示。 图1.建立连接,正常 之后强制结束server1(ctrl+c),再次查看当前连接状态,如图2所示。图2.server1主动关转载 2017-06-26 11:34:13 · 16318 阅读 · 0 评论 -
Linux脚本编程/shell语法和shell进度条的编写
一、shell脚本的基本语法 1、条件测试:在shell脚本中,进行测试最常用的命令是test和[ 1).比较条件的成功与否,由test和 [ 的命令的退出码决定; 2).在shell脚本中,条件成立于不成立,与C语言正好相反,shell脚本认为0为真,非0为假; 3).shell脚本认为一行是一条命令,所以test是命令,后面的是参数或选项,用空格隔开; 4).shell脚本中进行整数原创 2017-07-06 17:02:54 · 455 阅读 · 0 评论 -
linux网络编程/TCP三次握手与四次挥手
一、三次握手在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送 syn 包到服务器,并进入 SYN_SEND 状态,等待服务器确认; 第二次握手:服务器收到 syn 包,必须确认客户的 SYN,同时自己也发送一个 SYN 包,即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态; 第三次握手:客户端收到服务器的原创 2017-06-20 11:40:47 · 263 阅读 · 0 评论 -
linux/URG-&-PSH/调研tcp定时器/
一、URG-&-PSH 1、紧急标志URG(U):占1位,当URG=1时,表示紧急指针字段有效。通知发送方本数据报文段中含有紧急数据,需要马上传输,这时发送方不会等到缓冲区满再发送,而是直接优先将该报文段发送出去。 2、推送标志PSH(P):占1位,PSH=1时,表示当前报文段需要请求推送(Push)操作,即接收方TCP收到推送标志位为1的报文时 ,就立即提交给接收的应用进程,而不必等到整个缓存原创 2017-06-20 10:18:18 · 359 阅读 · 0 评论 -
死锁的定义、产生原因、必要条件、避免死锁和解除死锁的方法
一、死锁产生的原因: 1)、因为系统的资源不足,不能满足进程的资源请求,会导致多个线程同时争夺一个资源 2)、进程运行推进的顺序不合适 3)、资源分配不当,有的进程资源分配太少,会因为争夺资源而陷入死锁 二、死锁产生的场景: 1)、多个线程:彼此申请对方资源不足而导致的死锁,A申请B的锁的时候,因为锁被占用所以会把A挂起等待B释放锁,同时B申请A的 锁,同样因为A的锁锁被占用,B会被挂起等原创 2017-04-26 19:46:58 · 859 阅读 · 0 评论 -
文章标题
一、概念: 1、**可重入函数 1)、函数被不同的控制流程调用,有可能在第一次调用还没返回时就再次进入该函数,这称为重入。 2)、insert函数访问一个全局链表,有可能因为重入而造成错乱,像这样的函数称为不可重入函数。如果一个函数符合以下条件之一则是不可重入的: a、调用了malloc/free,因为malloc也是用全局链表来管理堆的; b、调用了标准I/O库函数。标原创 2017-04-27 10:52:15 · 218 阅读 · 0 评论 -
linux/端口分类调研
一、 .端口的概念在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。物理端口指的是物理存在的端口,如ADSL Modem、集线器、交换机、路由器上用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。逻辑端口是指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。由于物理端口和逻辑原创 2017-06-19 17:25:48 · 369 阅读 · 0 评论 -
进度条原理
一 、在linux下编写一个简单的进度条 进度条实现原理: 1)、实现动态的增长定义一个数组,并设置一个计数器,当数字增加的同时,给字符数组每次增加一个元素,并且打印时覆盖之前的数组。2)、保证打印信息输出在一行每次将光标定位在最左边,从光标处打印,使用‘\n’,回车3)、复制动态的效果实现定义一个数组Char *in原创 2017-02-16 23:50:06 · 1001 阅读 · 0 评论 -
进程调度算法
常见的进程调度算法:1、时间片轮转法: 在分时系统中,都采用时间片轮转法。简单轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行。在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的原创 2017-02-18 23:37:00 · 536 阅读 · 0 评论 -
Linux中的atexit()函数,t 的权限, file结构体
1、atexit()函数注册函数的代码,运行结果:过程分析: atexit函数先注册三个fun函数,,然后等待3秒,再打印"hello bit"(如果main函数中输出部分不加\n,则main函数要输出的内容会先放到标准输出缓冲区中,当main中调用exit函数的时候,会做一些自身清理工作,同时刷新标准输出缓冲区中的内容),当执行到exit(0)时,ex原创 2017-02-20 15:59:30 · 289 阅读 · 0 评论 -
CentoS6.5 vim的配置
资源下载地址:摘要:利用vmware安装了CentoS6.5,在linux的系统上安装了vim编辑器,下面主要讨论下简单的vim配置1、简单的页面设置(附有效果图)首先,进入我常用的用户名下,查看主目录,命令:#su sufang $cd sufang $ls -a然后,查看建立目录和文件,命令:$touch .vimrc$ls$mkdir .原创 2017-02-16 11:58:34 · 845 阅读 · 0 评论 -
linux中task_struct结构体中的字段
Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,task_struct是Linux中的【进程控制块PCB结构】的具体数据结构这个结构体包含了一个进程所需的所有信息。它定义在linux-2.6.38.8/include/linux/sched.h文件中。下面对task_struct这个结构体进行各个字段的详细介绍1.调度数据转载 2017-03-02 09:09:46 · 312 阅读 · 0 评论 -
文章标题shell获取用户名和主机号
shell代码: shell获取用户名和ID号原创 2017-03-23 22:46:44 · 729 阅读 · 0 评论 -
构建生产者与消费者的单链表模式
1、在linux环境下实现一个单链表 代码:#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<unistd.h>typedef struct _node{ int data; struct _node *next;}node_t, *node_p, **node_pp原创 2017-03-30 11:59:00 · 373 阅读 · 0 评论 -
操作系统-面试题/进程与线程
一、进程是不活泼的。 进程从来不执行任何东西,只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。因此,如果在单进程环境中,你有两个或多个线程正在运行,那么这两个线程将共享单个地址空间。这些线程能够执行相同的代码,对相同的数据进行操作。这些线程还能共享内核对象句柄,因为句柄表依赖于每个进程而原创 2017-08-29 19:23:22 · 513 阅读 · 0 评论