
C语言
Soonyang Zhang
书读半本,浅尝辄止,天资鲁钝,岁月蹉跎,一事无成。
展开
-
queue的c实现
用c模拟实现C++中的queue。使用了环形缓冲区,只能向队列中放指针。纯属个人娱乐。ringbuf.h#ifndef RING_BUG_H_#define RING_BUG_H_#include <memory.h>#include <string.h>#include <stdlib.h>#include <stdbool.h>...原创 2021-05-09 16:12:56 · 831 阅读 · 0 评论 -
linux守护进程示例-linux daemon and singal handler
Introduction 为什么要用守护进程,参考博客[1]。Code Show you my fucking source code. Code is copied from here and there, referece form nginx [2], netdata [3], mosquitto [4].turtle.c/*****************************Project:turtleAuthor:zsyCreate:2021/03/09To test dae原创 2021-03-10 10:09:53 · 575 阅读 · 0 评论 -
tcp socket客户端服务器和epoll以及mbuf
需要一个简单的demo,客户端向服务器发送一张图片。 乍一想,觉得是一个挺简单的需求,实际写的时候,需要考虑很多细节。 指定一个简单的应用层协议,用于图片传输。简单一点,payload_len+payoad。其中payload_len,四字节长度,指示图片的大小。就是一个完整的报文有图片长度+图片内容组成。服务侧使用的socket采用non blocking模式。 服务侧使用的socket...原创 2019-08-11 15:48:22 · 271 阅读 · 0 评论 -
libevent最小堆代码提取
最小堆的性质,父节点的数值逗比其孩子的数值要小。我之前仿真的时候,需要使用定时器功能,就把libevent中的最小堆抄了出来。现在又整理了下,录在这里。 当时使用的C++代码,现在看看,在erase中有一个bug,记在这里,幸亏当时没有这个ease的需求。uint32_t MinHeap::Erase(lib_event_t *ev){ if(-1!=ev->min_heap_id...原创 2019-04-27 21:58:01 · 275 阅读 · 0 评论 -
C语言原子锁
atomic_lock.c#include <stdio.h>#include <pthread.h>#include <stdlib.h>//referecne https://github.com/divfor/atomic_hash/blob/master/src/atomic_hash.cstatic int lock;static int ...原创 2019-04-05 15:18:01 · 2042 阅读 · 0 评论 -
uthash的使用
只要是读过MQTT broker开源实现的mosquitto代码,就需要了解其对uthash的使用。我也打算把这个只有头文件的hash库用到自己的demo里。于是就遇见了坑。 我的代码是这样的。bug_code.cc#include <iostream>#include <stdio.h>#include <stdint.h>#include &l...原创 2019-04-05 12:09:25 · 1717 阅读 · 0 评论 -
用c语言模拟面向对象编程
最近有点无事可干,遇见瓶颈期了,就给自己找点事情,不浪费时间就是了。学习了gobject,就对这个用C来模拟面向对象编程的方法有点着迷。我的模拟,只能实现但继承,每一个结构体中都含有一个虚的函数表。MyObject中的vtable是为了调用子类的dispose函数进行资源释放。my_object.h#ifndef MY_OBJECT_H_#define MY_OBJECT_H_#incl...原创 2019-04-04 20:44:11 · 828 阅读 · 0 评论 -
gobject signal and callback
本篇学习下gobject中的信号的概念。同时修改了类中的函数指针。my_add.h#ifndef MY_ADD_H_#define MY_ADD_H_#include <glib-object.h>#include <glib-object.h>#ifdef __cplusplusextern "C"{#endif#define MY_ADD_TYPE...原创 2019-03-31 22:16:00 · 334 阅读 · 0 评论 -
windows下inet_pton和inet_ntop
code is copied from webrtc project, for possible reference.#include <stdio.h>#include <stdint.h>#pragma comment(lib,"ws2_32.lib")#include <winsock2.h>#include<Ws2tcpip.h>...原创 2019-03-31 12:02:15 · 11329 阅读 · 0 评论 -
gobject get and set property
关于gobject中的私有成员变量的setter和getter,[1]已经有很详细的介绍了。我在这里,把自己联系的例子贴上来。 gobject自定义对象中的头文件一般都有类似下面的宏定义:#define MY_PARENT_TYPE (my_parent_get_type ())#define MY_PARENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj...原创 2019-03-31 09:53:33 · 559 阅读 · 0 评论 -
一个丢包率计算程序
根据数据包序号,统计丢包率原创 2018-01-07 11:43:45 · 8933 阅读 · 2 评论 -
expected 'float **' but argument is of type 'float (*)[5]'
出错代码:#include#include#define NUM_NODE 5int test(float **array,int len){ array[0][2]=123.45; return 0;}int main(){ float num[NUM_NODE][NUM_NODE]; memset(num,0,NUM_NODE*NUM_N原创 2017-07-25 20:00:07 · 10364 阅读 · 1 评论 -
udp采用sendmsg发送消息失败
本人最近在学习socket程序的编写,使用sendmsg向外发送数据,但是接收端不能接收数据。代码是这样的:#include#include // ntohs inet_ntoa#include#include#define MAX_LEN 100static char *server="127.0.0.1";static int port=1234;int parse原创 2017-06-06 21:02:25 · 3835 阅读 · 0 评论