<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yel617的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yel617</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yel617]]></copyright><item><title><![CDATA[Linux串口编程]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7704335</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7704335</guid><author>yel617</author><pubDate>Sat, 30 Jun 2012 09:54:24 +0800</pubDate><description><![CDATA[串口概述
常见数据通信方式:并行通信，串行通信
UART的主要操作：
   >数据发送及接受
   >产生中断
   >产生波特率
   >Loopback模式
   >红外模式
   >自动流控模式
串口参数的配置主要包括:波特率、数据位、停止位、流控协议。
   linux中的串口设备文件放于/de/目录下，串口一，串口二分别为"/dev/ttyS0","/dev/ttyS]]></description><category></category></item><item><title><![CDATA[assert()函数用法总结]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7704295</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7704295</guid><author>yel617</author><pubDate>Sat, 30 Jun 2012 09:23:04 +0800</pubDate><description><![CDATA[assert宏的原型定义在中，其作用是如果它的条件返回错误，则终止程序执行，原型定义：

#include assert.h>
void assert( int expression );


　　assert的作用是现计算表达式 expression ，如果其值为假（即为0），那么它先向stderr打印一条出错信息，然后通过调用 abort 来终止程序运行。请看下面的程序清单badpt]]></description><category></category></item><item><title><![CDATA[第十二章 POSIX 线程（三）]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7176380</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7176380</guid><author>yel617</author><pubDate>Wed, 04 Jan 2012 21:57:02 +0800</pubDate><description><![CDATA[用互斥量进行同步
       另一种用在多线程程序中的同步访问方法是使用互斥量。它允许程序员锁住某个对象，使得每次只有一个线程访问它。为了控制对关键代码的访问，必须在进入这段代码之前锁住一个互斥量，然后在完成操作之后解锁它。
#include 
int pthread_mutex_init(pthread_mutex_t *mutex,  const pthread_mutexattr_t]]></description><category></category></item><item><title><![CDATA[linux内核中Kconfig文档的作用]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7161289</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7161289</guid><author>yel617</author><pubDate>Thu, 29 Dec 2011 11:15:31 +0800</pubDate><description><![CDATA[linux内核中Kconfig文档的作用

2.6内核的源码树目录下一般都会有两个文文：Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库，每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时，从Kconfig中读出配置菜单，用户配置完后保存到.config(在顶层目录下生成]]></description><category></category></item><item><title><![CDATA[Linux内核Makefile文件]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7161277</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7161277</guid><author>yel617</author><pubDate>Thu, 29 Dec 2011 11:11:52 +0800</pubDate><description><![CDATA[=== 1 概述
     === 2 角色分工
     === 3 内核编译文件
        --- 3.1 目标定义
        --- 3.2 内嵌对象 - obj-y
        --- 3.3 可加载模块 - obj-m
        --- 3.4 导出符号
        --- 3.5 库文件 - lib-y
        --- 3.6 目录递归]]></description><category></category></item><item><title><![CDATA[第十二章 POSIX 线程（二）]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7106813</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7106813</guid><author>yel617</author><pubDate>Tue, 27 Dec 2011 19:38:03 +0800</pubDate><description><![CDATA[信号量
      信号量是一个特殊类型的变量，它可以被增加或减少，但对其的关键访问被保证是原子操作，即使在一个多线程程序中也是如此。这意味着若果一个程序中有两个（或更多）的线程试图改变一个信号量的值，系统将保证所有的操作都将依次进行。但如果是普通变量，来自同一程序中的不同线程的冲突操作导致的结果将是不确定的。
       信号量--二进制信号量，它只有 0 和 1 两种取值。还有一种更通用]]></description><category></category></item><item><title><![CDATA[第十二章 POSIX 线程（一）]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7091909</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7091909</guid><author>yel617</author><pubDate>Wed, 21 Dec 2011 17:30:42 +0800</pubDate><description><![CDATA[在一个程序中的多个执行线路就叫做线程（thread）。更准确的定义是：线程是一个进程内部的一个控制序列。
        线程有一套完整的与其相关的函数库调用，它们中的绝大多数函数名都是以 pthread_ 开头，为了使用这些函数库调用，我们必须定义宏 _PEENTRANT，在程序中包含头文
件 pthread.h ，并且在编译程序的时需要用选项 -lpthread 来链接线程库。
pthr]]></description><category></category></item><item><title><![CDATA[第十一章 进程和信号（三）]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7091422</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7091422</guid><author>yel617</author><pubDate>Wed, 21 Dec 2011 14:57:49 +0800</pubDate><description><![CDATA[一个健壮的信号接口 
       我们已经对用 signal 和其相关函数来生成和捕获信号做了比较深入的介绍，因为它们在传统的 Unix 编程中很常见。但 X/Open 与 Unix 规范推荐了一个更新和更健壮的信号编程接口：sigaction 。它的定义如下所示：
#include 

int sigaction ( int sig, const struct sigaction *a]]></description><category></category></item><item><title><![CDATA[第十一章 进程和信号（二）]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7087542</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7087542</guid><author>yel617</author><pubDate>Tue, 20 Dec 2011 17:30:07 +0800</pubDate><description><![CDATA[信号 
      信号是UNIX与Linux系统响应某些条件而产生的一个事件。接收到该信号的进程会相应地采取一些行动。我们用术语（raise）表示一个信号的产生，使用术语（catch）来表示接收到一个信号。信号是由于某些错误条件而生成的，如内存段冲突、浮点处理器错误或非法指令。他们由
 shell 和终端处理器生成来引起中断，它们还可以作为在进程间传递消息或修改行为的一种方式，明确地由一个进]]></description><category></category></item><item><title><![CDATA[第十一章 进程和信号（一）]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/7054093</link><guid>https://blog.youkuaiyun.com/yel617/article/details/7054093</guid><author>yel617</author><pubDate>Thu, 08 Dec 2011 18:42:39 +0800</pubDate><description><![CDATA[我们可以通过调用fork来创建一个新进程。这个系统调用会复制当前进程，在进程表中创建一个实体，而且与当前进程具有相同的属性。新进程与原始进程几乎是相同的，执行相同的代码，但是具有其自己的数据空间，环境与文件描述符。
#include]]></description><category></category></item><item><title><![CDATA[c语言中 static 用法]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6980287</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6980287</guid><author>yel617</author><pubDate>Thu, 17 Nov 2011 09:21:58 +0800</pubDate><description><![CDATA[static在c里面可以用来修饰变量，也可以用来修饰函数。
一、修饰变量
变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不是堆，不要弄混。

int
 a ;
int main()
{
    int b ; 
    int c* = (int *)malloc(sizeof(int));
}
a是全局变量，b是栈变量，c是堆变量。

stat]]></description><category></category></item><item><title><![CDATA[指针与二维数组]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6923621</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6923621</guid><author>yel617</author><pubDate>Tue, 01 Nov 2011 10:37:28 +0800</pubDate><description><![CDATA[一.、二维数组元素的地址 

        定义如下二维数组：
        int a[3][4] = { {0,1,2,3},  {4,5,6,7},  {8,9,10,11} }； 
        a为二维数组名，此数组有3行4列， 共12个元素。但也可这样来理解，数组a由三个元素组成：a[0]， a[1]， a[2]。而它们中每个元素又是一个一维数组， 且都含有4个
元素]]></description><category></category></item><item><title><![CDATA[c语言 continue break]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6801385</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6801385</guid><author>yel617</author><pubDate>Thu, 22 Sep 2011 17:36:39 +0800</pubDate><description><![CDATA[#include 

int main()
{
    int i;
    while(1)
    {
    	printf("ok0\n");
        for (i = 0; i < 5; i++)
        {
	    printf("ok1\n");]]></description><category></category></item><item><title><![CDATA[指针数组]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6776926</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6776926</guid><author>yel617</author><pubDate>Thu, 15 Sep 2011 10:10:58 +0800</pubDate><description><![CDATA[一个一维指针数组的定义：int *ptr_arry[10]
       指针数组中的每一个元素均为指针，即有诸形如 “ *ptr_arry[i]
 ” 的指针。

       由于数组名本身也是一个指针，因此指针数组中的元素亦可以表示为
 “ *( *（ptr_ar]]></description><category></category></item><item><title><![CDATA[基于UDP协议的网络程序]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6675118</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6675118</guid><author>yel617</author><pubDate>Wed, 10 Aug 2011 11:17:31 +0800</pubDate><description><![CDATA[服务器
#include  
#include  
#include  
 
#define MAXLINE 80 
#define SERV_PORT 4101 
 
int main(void) 
{
	struct sockaddr_in servaddr, cliadd]]></description><category></category></item><item><title><![CDATA[基于TCP协议的网络程序]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6674930</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6674930</guid><author>yel617</author><pubDate>Wed, 10 Aug 2011 10:38:11 +0800</pubDate><description><![CDATA[服务器调用socket()、bind()、listen()完成初始化后，调用accept()阻塞等待，处于监听端口的状态，客户端调用socket()初始化后，调用connect()发出SYN段并阻塞等待服务器应答，服务器应答一个SYN-ACK段，客户端收到后从connect()返]]></description><category></category></item><item><title><![CDATA[Socket 编程]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6674684</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6674684</guid><author>yel617</author><pubDate>Wed, 10 Aug 2011 10:29:31 +0800</pubDate><description><![CDATA[IPV4套接口地址结构以“sockaddr_in”命名
sockaddr_in（在中定义）：
struct sockaddr_in {
short int sin_family; /* Address family */
unsigned short int sin_po]]></description><category></category></item><item><title><![CDATA[C语言内存分配]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6671234</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6671234</guid><author>yel617</author><pubDate>Tue, 09 Aug 2011 09:02:44 +0800</pubDate><description><![CDATA[一、一个经过编译的 C/ C++ 的程序占用的内存分成以下几个部分：

1 、栈区（ stack ）：由编译器自动分配和释放 ，存放函数的参数值、局部变量的值等，甚至函数的调用过



程都是用栈来完成。其操作方式类似于数据结构中的栈。



2 、堆区（ h]]></description><category></category></item><item><title><![CDATA[Linux 时间函数]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6669087</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6669087</guid><author>yel617</author><pubDate>Mon, 08 Aug 2011 14:47:28 +0800</pubDate><description><![CDATA[时间类型：
Coordinated Universal Time(UTC):

世界标准时间，也就是大家所熟悉的格林威治标准时间（Greenwich Mean Time, GMT）

Calender Time:

日历时间，是用一个标准时间点到此时经过的秒数来表示]]></description><category></category></item><item><title><![CDATA[access（判断是否具有存取文件的权限）]]></title><link>https://blog.youkuaiyun.com/yel617/article/details/6668720</link><guid>https://blog.youkuaiyun.com/yel617/article/details/6668720</guid><author>yel617</author><pubDate>Mon, 08 Aug 2011 11:34:43 +0800</pubDate><description><![CDATA[access（判断是否具有存取文件的权限）
相关函数 stat，open，chmod，chown，setuid，setgid
表头文件 #include
定义函数 int access(const char * pathname,int mode);
函数说明 acces]]></description><category></category></item></channel></rss>