随笔分类 - C
摘要:template.h /* * @Description: * @Author: * @version: * @Date: * @LastEditors: * @LastEditTime: */ #ifndef __xxx_H__ #define __xxx_H // // Include file
阅读全文
摘要:信号的简介 信号(signal):在 Linux 系统中,信号是一种进程间通信(IPC)的机制,主要用于通知进程发生了某些异常或特殊情况。信号可以由硬件异常(如除零错误)、软件异常(如非法内存访问)或来自其他进程的通知(如终止请求)触发。Linux 支持多种信号,每种信号都有其特定的用途和默认行为。
阅读全文
摘要:数据的表示 进制 对于整数的表示形式有:十进制、二进制、八进制、十六进制。例如:char a= 17, b = 0B00010001, c = 021, d = 0X11; 其实 a, b, c ,d 是都相等的。写个demo验证一下 #include <stdio.h> int main(int
阅读全文
摘要:原型声明:strtok() 所属头文件:#include <string.h> 函数原型: char * strtok ( char * str, const char * delimiters); 通过给定标志字符串delimiters分割目标字符串,目标字符串str不能是常量字符串。若分割成功,
阅读全文
摘要:解析数组 将JSON数组解析并存储到自定义的结构体组合的单链表中,打印单链表中所有的结点数据。 例如: [ { "name": "Zhao", "age": 18 }, { "name": "Qian", "age": 19 }, { "name": "Sun", "age": 20 } ] 需要用
阅读全文
摘要:使用cJSON库构建比较简单的JSON类型: create_json.c #include <stdio.h> #include <string.h> #include <stdlib.h> #include "cJSON.h" static int create_json_type_1(void)
阅读全文
摘要:在数组初始化时,我们不希望将数组大小写死,后续可能会有修改,那么对于未指定大小的数组,如何计算其元素个数? 思路:已知数组名代表整个数组的物理大小,数组内单个元素代表数组的一个单元物理大小,假设数组物理空间是100,单个元素物理空间是5,那么该数组一共有20个元素。 array_element_nu
阅读全文
摘要:一、pkg-config pkg-config是一个命令行工具,主要用于帮助开发者在编译依赖于特定库的软件时,自动获取和设置正确的编译器选项和链接器选项。它的主要作用在于简化编译过程,确保程序能够正确地找到所需的头文件和库文件,尤其是在库文件可能安装在非标准位置的情况下。 pkg-config版本查
阅读全文
摘要:一、CMake概述 CMake是一个跨平台的项目构建工具。编写完CMakeLists.txt(注意文件名称是固定的,区分大小写)后,执行cmake命令,生成Makefile文件和其他中间过程文件。当然你也可以手动去编写Makefile文件,但是编写的工具量比较大,而且依赖关系也比较多,比较容易出错。
阅读全文
摘要:Android调试桥接器,简称adb(Android debug bridge) 列出所有已连接的设备 命令:adb devices 运行指定的设备的shell 命令:adb -s serialNumber shell -- 清除离线设备 命令:adb kill-server 从本地主机拷贝文件到远
阅读全文
摘要:一、安装 zlog home page: zlog github 链接 编译和安装 链接 二、配置文件 编程时,在zlog_init()函数需要指定配置文件,而配置文件可以根据用户的需求进行个性化定制。 2.1 基本配置 test_hello.conf [global] strict init =
阅读全文
摘要:关于strncpy()、strncat()中的参数n的问题? char * strncpy ( char * destination, const char * source, size_t num ) 功能:从source中复制num个字符到destination中。 1、若strlen(sour
阅读全文
摘要:一、cJSON库的使用:解析JSON 和 组合JSON cSJON库的github 以下链接详细说明了 解析JSON 和 组合JSON 解析JSON:涉及解析 键值对 "key": "val" 、 数组 ["string1", "string2"] 、 数组 [{"key1": "val1"}, {
阅读全文
摘要:背景 合集的前几篇都介绍了多线程的简单实现(锁设计),那么如何实现不带锁的多线程呢? 既然不能通过互斥锁、读写锁、信号量(有名和无名),那么只能通过全局变量标志来同步生产者线程和消费者线程。 实现 方法一 生产者线程每次往buff队列中写入一条数据后,需要更新这条数据的状态为: stored(注:数
阅读全文
摘要:背景介绍 多进程之间的同步机制:信号量。而在多线程编程中,通常更常见的是使用线程之间的同步机制,例如互斥锁、条件变量、信号量等,来实现线程之间的协调和通信。这些机制更适合用于线程级别的同步和通信需求。 POSIX信号 信号(signal)就是告知某一进程发生了某个事件的通知,有时也称为软件中断(so
阅读全文
摘要:## 条件介绍 1)已存在一个数据库AddressBook.db 以及 其中的一张表telephone,表的详细内容参考[Sqlite3的入门操作](https://www.cnblogs.com/caojun97/p/17636900.html)  和 snprintf(),为什么一个好的、安全的函数的那么的重要? 二、解决过程 sprintf函数例子 #include <
阅读全文
摘要:## 一、问题引入 通过 **Tinyhttpd:运行测试【1】 和 抓包分析【2】**,基本完成了对程序的功能测试和通信原理。此时可以进一步对源码进行分析,本文不考虑代码一行一行的分析,仅对关键部分代码解析。 ## 二、解决过程 ### 2-1 main()函数 主函数主要创建http的监听套接字
阅读全文
摘要:## 一、问题引入 **UNIX网络编程 卷1:套接字联网API(第三版)** 第6章 介绍了I/O复用可以通过select()的单进程服务器与多客户端通信。 UNIX下可用的5中I/O模型: - 阻塞式I/O - 非阻塞式I/O - **I/O复用(select和poll)** - 信号驱动式I/
阅读全文