
C语言
文章平均质量分 62
viewsky11
这个作者很懒,什么都没留下…
展开
-
Linux内核中的双向循环链表学习
Linux内核中的双向循环链表学习原创 2013-11-12 17:31:31 · 925 阅读 · 0 评论 -
多线程编程实例练习
pthread_join使一个线程等待另一个线程结束。代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。#include <pthread.h> #include <stdio.h> #include <stdlib.h>原创 2017-01-12 21:11:30 · 2495 阅读 · 0 评论 -
模拟网络驱动snull
snull.h文件/* * snull.h -- definitions for the network module * * Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet * Copyright (C) 2001 O'Reilly & Associates * * The source code in this fil原创 2017-02-28 23:45:19 · 653 阅读 · 0 评论 -
伙伴算法
#include <stdio.h> #include <stdlib.h> #include <time.h> #define MIN_MOMORY_SIZE 536870912 //随机产生的最小内存空间:512M (最大为1G) #define INDEX_SIZE 30 //哈希索引表大小 #define WORKTIME 1500原创 2017-03-17 21:50:03 · 903 阅读 · 0 评论 -
mqtt C客户端
Paho MQTT C客户端是一个使用标准C编写的流畅的MQTT。 实际上包含了两个C API,同步的和异步的,分别为MQTTClient和MQTTAsync。同步的API可以更简单更使用,执行完操作后,一些调用会被阻拦,编程也更容易;而在异步API没有调用的阻拦操作,所有API的调用都是通过会调来实现的,这使得API更适合有窗口环境的操作系统,许多应用没有主线程控制。linux环境: 在lin原创 2017-09-26 18:28:57 · 6817 阅读 · 0 评论 -
线性表 C
#include<stdio.h>#include<malloc.h> //注意这个分配地址的头文件必须得加#define INITIAL_SIZE 100 //定义线性表的初始大小#define INCREACEMENT 10 //定义线性表的分配增量//定义一个线性表结构struct List{ int *Elem; //线性表的基址int Lengt原创 2017-09-11 15:56:52 · 552 阅读 · 0 评论 -
pbc应用分析
pbc源码:https://github.com/cloudwu/pbchttps://blog.codingnow.com/2011/12/protocol_buffers_for_c.htmlpbc应用例子安装protobuf,源码:https://github.com/google/protobuf建立protobuf文件address.proto: syntax = "proto2";//原创 2017-09-30 17:57:22 · 1441 阅读 · 0 评论 -
C中的复合语句总结
C中表达式和复合语句的如下: ({exp1; exp2; exp3;})其值等于exp3的值。如果exp3不能求值,得到的结果就是void。 如下: ( {int a = 2+1; int b = 0; b;} ) // 0( {int a = 2+1; int b = 0; int c = 0;} ) // void int a = ({ int b = 8; in原创 2017-12-02 10:15:19 · 9823 阅读 · 0 评论 -
u-boot分析一
同步于简书: https://www.jianshu.com/p/c60cf237ffd1 以及个人博客: https://hades2013.github.iou-boot分析以ar9331和ar953x 的为例。 获取u-boot源码git clone https://github.com/pepe2k/u-boot_mod.git 一般u-boot的初始化过程: - 硬...原创 2018-04-25 17:14:07 · 571 阅读 · 0 评论 -
linux的数据结构---kernel链表
链表是一种常见的组织有序数据的数据结构,相对于数组,具有更好的动态性,可以高效的在链表的任意位置实时的插入或者删去。在linux的源代码中,大量的使用了链表。通常链表数据结构至少有两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。 在数据结构中定义一个指向任意类型为:struct list{ void *data; struct list *next;转载 2016-11-08 16:56:33 · 621 阅读 · 0 评论 -
c语言webserver
网络拷贝的C语言写的webserver: /* * WebServer.c * * Created on: Nov 3, 2012 * Author: pavithra * * A web server in C language using only the standard libraries. * The port number is passed as an arg转载 2016-11-08 14:54:26 · 1090 阅读 · 0 评论 -
深入分析 Linux 内核链表
本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和原创 2013-11-12 17:38:22 · 616 阅读 · 0 评论 -
字符串处理函数strcat和strtok
C函数编辑原型char *strcat(char *dest,char *src);extern 用法#include 在C++中,则存在于头文件中。功能把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。说明src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串原创 2014-09-28 11:07:37 · 1420 阅读 · 0 评论 -
sigismemeber和sigdelset函数解析
头文件#include函数原型int sigismember(const sigset_t *set,int signum);相关函数sigemptyset,sigfillset,sigaddset,sigdelset说明sigismember()用来测试参数signum 代表的信号是否已加入至参数set信号集里。如果信号集里已有该信号则返回1,否则返回0。如果有错误则原创 2014-12-18 11:01:53 · 1719 阅读 · 0 评论 -
libhttpd的使用
LibHttpd是一个开源轻量级嵌入式Web server,LibHttpd实现了下述功能:实现了HTTP的子集;使用表格技术自动处理Html Form数据;产生的内容既可以是静态的网页,也可以是调用C函数动态产生的(callback); LibHttpd提供API,利用这些API,用户可以很方便地将自己的Web内容加入到程序当中。libhttpd中带有英文的使用手册,也增加了使用实例源码原创 2016-09-13 10:46:05 · 2169 阅读 · 0 评论 -
wifidog中的wdctl命令
新的wifidog源码增加了wdctl的命令,看了一下,是一个很好命令行的模板。收藏! wdctl.h文件#ifndef _WDCTL_H_#define _WDCTL_H_#define DEFAULT_SOCK "/tmp/wdctl.sock"#define WDCTL_UNDEF 0#define WDCTL_STATUS 1#define WDCTL_S原创 2016-08-23 11:45:55 · 2825 阅读 · 0 评论 -
http和https
http和https的区别概念上参看: http://blog.youkuaiyun.com/mingli198611/article/details/8055261浏览wifidog代码时,发现C代码反映的http和https请求的区别,拷贝过来收藏!具体包含的头文件去wifidog中查看,以下是主要代码:wifidog-gateway/src/sample_http.h#ifndef _SIMPLE_HT原创 2016-08-23 12:39:10 · 3023 阅读 · 0 评论 -
open和fopen
open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大原创 2016-09-22 11:29:21 · 449 阅读 · 0 评论 -
va_list解析
VA_LIST 是在C语言中解决变参问题的一组宏他有这么几个成员:1) va_list型变量:#ifdef _M_ALPHAtypedef struct { char *a0; /* pointer to first homed integer argument */ int offset; /* byte of转载 2016-11-04 17:23:23 · 405 阅读 · 0 评论 -
rpcgen的简单讲解及例子程序
rpcgen 简介rpcgen可以自动生成RPC服务器程序的大多数代码,它的输入为一个规格说明文件,它的输出为一个C语言的源程序。规格文件(*.x)包含常量、全局数据类型以及远程过程的声明。Rpcgen产生的代码包含了实现客户机和服务器程序所需要的大部分源代码。他包括参数整理、发送RPC报文、参数和结果的外部数据表示以及本地数据表示的转换等。不过在由rpcgen生成的源文件中,没有过程的具体实...原创 2018-05-28 11:14:33 · 3833 阅读 · 0 评论