<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BUG_SPECIAL的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/BUG_SPECIAL</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BUG_SPECIAL]]></copyright><item><title><![CDATA[Linux下的crond crontab]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/74990236</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/74990236</guid><author>BUG_SPECIAL</author><pubDate>Tue, 11 Jul 2017 17:44:52 +0800</pubDate><description><![CDATA[crond crontab两者不可分割，crontab是一条常见于Unix或类Unix下的一条命令（windows下不同），用于设置周期性被执行的指令，crond为它的守护进程。可以用service crond status 查看 cron服务状态，如果没有启动则 service crond start启动它，cron服务是一个定时执行的服务。 
service crond stop]]></description><category></category></item><item><title><![CDATA[进度条实现]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/74454775</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/74454775</guid><author>BUG_SPECIAL</author><pubDate>Wed, 05 Jul 2017 16:38:16 +0800</pubDate><description><![CDATA[本片文章介绍进度条shell c的实现代码Shell脚本实现#!/bin/bashi=0
str=""
arr=("|" "/" "-" "\\")
color=("30" "31" "34" "37")
while [ $i -le 100 ]
do
    let index=i%4
    printf "\033[1;%dm[%-100s][%d%%]\033[1;4;%dm%c\033[0]]></description><category></category></item><item><title><![CDATA[poll服务器]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/73551472</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/73551472</guid><author>BUG_SPECIAL</author><pubDate>Wed, 21 Jun 2017 17:50:52 +0800</pubDate><description><![CDATA[想详细彻底地了解poll或看懂下面的代码请参考《Linux网络编程——I/O复用之poll函数》代码： 
[csharp] view plain copyinclude include include include include include include include include include include define OPEN_MAX 100int main(int argc]]></description><category></category></item><item><title><![CDATA[shell eval命令]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/73550913</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/73550913</guid><author>BUG_SPECIAL</author><pubDate>Wed, 21 Jun 2017 17:04:47 +0800</pubDate><description><![CDATA[本文将会讲解一些linux中命令的使用与技巧希望对新手给予帮助 
一 e v a l命令将会首先扫描命令行进行所有的置换，然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时被称为复杂变量。不过这些变量本身并不复杂。e v a l命令也可以用于回显简单变量，不一定是复杂变量。 
1 eval命令也可以用于回显简单变量,不一定是复杂变]]></description><category></category></item><item><title><![CDATA[Linux网络编程——epoll服务器编写]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/73250534</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/73250534</guid><author>BUG_SPECIAL</author><pubDate>Wed, 14 Jun 2017 17:35:02 +0800</pubDate><description><![CDATA[epoll服务器端代码]]></description><category></category></item><item><title><![CDATA[Select服务器]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72901895</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72901895</guid><author>BUG_SPECIAL</author><pubDate>Wed, 07 Jun 2017 17:09:00 +0800</pubDate><description><![CDATA[服务器代码：#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>int array_fds[1024];//第三方数组，保存所有需要注意的I/Ostatic voi]]></description><category></category></item><item><title><![CDATA[Linux进程池]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72853323</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72853323</guid><author>BUG_SPECIAL</author><pubDate>Sat, 03 Jun 2017 17:30:54 +0800</pubDate><description><![CDATA[进程池和线程池池的概念由于服务器的硬件资源“充裕”，那么提高服务器性能的一个很直接的方法就是以空间换时间，即“浪费”服务器的硬件资源，以换取其运行效率。这就是池的概念。池是一组资源的集合，这组资源在服务器启动之初就完全被创建并初始化，这称为静态资源分配。当服务器进入正是运行阶段，即开始处理客户请求的时候，如果它需要相关的资源，就可以直接从池中获取，无需动态分配。很显然，直接从池中取得所需资源比动态分]]></description><category></category></item><item><title><![CDATA[路由表条目生成算法]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72853279</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72853279</guid><author>BUG_SPECIAL</author><pubDate>Sat, 03 Jun 2017 17:24:29 +0800</pubDate><description><![CDATA[首先，我们先了解一下路由表是个啥 
       路由表是指路由器或者其他互联网网络设备上存储的一张路由信息表，该表中存有到达特定网络终端的路径，在某些情况下，还有一些与这些路径相关的度量。 
       路由表建立的主要目标是为了实现路由协议和静态路由选择。 
路由表中的表项内容包括：    Destination：目的网络地址 
    Genmask：子网掩码 
    Gateway：下一]]></description><category></category></item><item><title><![CDATA[NAT是个啥]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72645639</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72645639</guid><author>BUG_SPECIAL</author><pubDate>Tue, 23 May 2017 16:15:49 +0800</pubDate><description><![CDATA[NAT，网络地址转换，当在专用网内部的一些主机本来已经分配到了本地IP地址（即仅在本专用网内使用的专用地址），但现在又想和因特网上的主机通信（并不需要加密）时，可使用NAT方法。也就是说，通过NAT将本网络的某主机的私有IP地址转换为公有IP地址，以实现访问Internet。它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单，NAT不仅完美地解决了lP地址不足的问]]></description><category></category></item><item><title><![CDATA[RARP协议的使用场景]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72303473</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72303473</guid><author>BUG_SPECIAL</author><pubDate>Tue, 16 May 2017 16:34:19 +0800</pubDate><description><![CDATA[RARP：反向地址转换协议。及把物理地址转换为IP地址的一种协议，工作在网络层。RARP的基本工作原理如下：（1）发送端发送一个本地的RARP广播包，在此广播包中声明自己的MAC地址，并且请求任何收到此请求的RARP服务器分配一个IP地址。（2）本地网段上的RARP服务器收到此请求后，检查其RARP列表，查找该MAC地址对应的IP地址。如果存在，RARP服务器就给源主机发送一个响应数据包，并将此IP]]></description><category></category></item><item><title><![CDATA[Linux——CRC校验运算的介绍]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72303083</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72303083</guid><author>BUG_SPECIAL</author><pubDate>Tue, 16 May 2017 16:22:46 +0800</pubDate><description><![CDATA[CRC，即循环冗余校验码，是数据通信领域中最常用的一种查错校验码，其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查（CRC）是一种数据传输检错功能，对数据进行多项式计算，并将得到的结果附在帧的后面，接收设备也执行类似的算法，以保证数据传输的正确性和完整性。其根本思想就是先在要发送的帧后面附加一个数，生成一个新帧发送给接收端。当然，这个附加的数不是随意的，它要使所生成的新帧能与发送端和接收端]]></description><category></category></item><item><title><![CDATA[Linux——守护进程（精灵进程）创建fork一次.两次的区别]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72027819</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/72027819</guid><author>BUG_SPECIAL</author><pubDate>Sun, 14 May 2017 17:35:48 +0800</pubDate><description><![CDATA[守护进程概念，创建守护进程的步骤，代码实现，fork一次两次的区别]]></description><category></category></item><item><title><![CDATA[可重入函数与线程安全]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/71121937</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/71121937</guid><author>BUG_SPECIAL</author><pubDate>Wed, 03 May 2017 13:10:15 +0800</pubDate><description><![CDATA[可重入函数： 
       当程序被多个线程反复执行，产生的结果正确。如果一个函数只访问自己的局部变量或参数，称为可重入函数。 
不可重入： 
       当程序被多个线程反复调用，产生的结果出错。 
       当函数访问一个全局的变量或者参数时，有可能因为重入而造成混乱，像这样的函数称为不可重入函数如果⼀个函数符合以下条件之⼀则是不可重⼊的: 
    （1）调⽤了malloc或free,]]></description><category></category></item><item><title><![CDATA[Linux信号——Sleep函数的模拟实现（利用alarm，pause，sigsuspend函数）]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/71108836</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/71108836</guid><author>BUG_SPECIAL</author><pubDate>Wed, 03 May 2017 11:40:02 +0800</pubDate><description><![CDATA[mysleep——利用alarm pause函数实现版本#include<stdio.h>
#include<signal.h>
#include<unistd.h>void sig_alrm(int signo)
{}int mysleep(int second)
{
    struct sigaction new,old;
    int unslept = 0;
    new.sa_han]]></description><category></category></item><item><title><![CDATA[死锁产生的四个必要条件]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/71108542</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/71108542</guid><author>BUG_SPECIAL</author><pubDate>Wed, 03 May 2017 11:29:42 +0800</pubDate><description><![CDATA[死锁产生的四个必要条件（1） 互斥条件：一个资源每次只能被一个进程使用。
（2） 请求与保持条件：一个进程因请求资源而阻塞时，对已获得的资源保持不放。
（3） 不剥夺条件:进程已获得的资源，在末使用完之前，不能强行剥夺。
（4） 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件，只要系统发生死锁，这些条件必然成立，而只要上述条件之一不满足，就不会发生死锁。]]></description><category></category></item><item><title><![CDATA[进程间通信——信号量（P、V操作）]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/64578550</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/64578550</guid><author>BUG_SPECIAL</author><pubDate>Tue, 21 Mar 2017 22:56:58 +0800</pubDate><description><![CDATA[信号量的基本介绍： 
   信号量的本质是⼀种数据操作锁，它本⾝不具有数据交换的功能，⽽是通过控制其他的通信资源（⽂件，外部设备）来实现进程间通信， 它本只是⼀种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。 
   当请求⼀个使⽤信号量来表⽰的资源时，进程需要先读取信号量的值来判断资源是否可⽤。⼤于0，资源可以请求，等于0，⽆资源可⽤，进程会进⼊睡眠状态直⾄资源可⽤。 
   当]]></description><category></category></item><item><title><![CDATA[linux struct_file结构]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/56094581</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/56094581</guid><author>BUG_SPECIAL</author><pubDate>Tue, 21 Feb 2017 00:36:27 +0800</pubDate><description><![CDATA[Linux struct file结构


struct file结构体定义在/linux/include/linux/fs.h(Linux 2.6.11内核)中，其原型是：
struct file {
        /*
         * fu_list becomes invalid after file_free is called and queued via
    ]]></description><category></category></item><item><title><![CDATA[atexit函数简述]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/56071576</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/56071576</guid><author>BUG_SPECIAL</author><pubDate>Tue, 21 Feb 2017 00:03:37 +0800</pubDate><description><![CDATA[atexit函数是一个特殊的函数，它是在正常程序退出时调用的函数，我们把他叫为登记函数（函数原型：int atexit (void (*)(void))）：

      ⼀个进程可以登记若⼲个（具体⾃⼰验证⼀下）个函数，这些函数由exit⾃动调⽤，这些函数被称为终⽌处理函数， atexit函数可以登记这些函数。
 exit调⽤终⽌处理函数的顺序和atexit登记的顺序相反（网上很多说造成顺]]></description><category></category></item><item><title><![CDATA[linux 下 PCB 结构体 task_struct]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/56024582</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/56024582</guid><author>BUG_SPECIAL</author><pubDate>Mon, 20 Feb 2017 20:24:40 +0800</pubDate><description><![CDATA[Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程，

task_struct是Linux中的【进程控制块PCB结构】的具体数据结构

这个结构体包含了一个进程所需的所有信息。它定义在linux-2.6.38.8/include/linux/sched.h文件中。


下面对task_struct这个结构体 进行各个字段的详细介绍

1. 调度数据成员]]></description><category></category></item><item><title><![CDATA[进程调度算法]]></title><link>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/55803521</link><guid>https://blog.youkuaiyun.com/BUG_SPECIAL/article/details/55803521</guid><author>BUG_SPECIAL</author><pubDate>Sun, 19 Feb 2017 12:53:17 +0800</pubDate><description><![CDATA[1. 先来先服务调度算法（FCFS）


先来先服务(FCFS)调度算法是一种最简单的调度算法，该算法既可用于作业调度，也可用于进程调度。当在作业调度中采用该算法时，每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业，将它们调入内存，为它们分配资源、创建进程，然后放入就绪队列。在进程调度中采用FCFS算法时，则每次调度是从就绪队列中选择一个最先进入该队列的进程，为之分配处理机，使]]></description><category></category></item></channel></rss>