![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学一点C语言
文章平均质量分 54
因上努力_果上随缘
学无止境
展开
-
System V IPC
system V ipc介绍原创 2022-09-03 21:33:08 · 365 阅读 · 0 评论 -
recvmsg和sendmsg函数
sendmsg和recvmsg读书笔记《网络编程1》原创 2022-07-17 18:00:05 · 1130 阅读 · 0 评论 -
openssl RSA公钥问题
嵌入式openssl公钥获取模式和指数原创 2022-07-07 22:45:35 · 334 阅读 · 0 评论 -
gdb+coredump
有一类程序我们是我们办法去设置断点调试的,特别是应用层网络收发报文出现segmentation fault这种情况, 这个时候使用gdb+coredump是一个比较好的定位该问题的方法。 1、 编译可执行程序添加符号表 在编译可执行程序的时候需要添加-g选项。 如果可执行程序链接动态库或者静态库,动态库和静态库的编译也需要添加-g选项。 可以通过file a.out 或者readelf -S a.out | grep debug查看可执行程序时候带有调试信息。 注: 带有stripped则是不带有可调试原创 2022-05-14 12:14:34 · 490 阅读 · 0 评论 -
strtok和strtok_r函数
函数定义 //extract tokens from strings #include <string.h> char *strtok(char *str, const char *delim); char *strtok_r(char *str, const char *delim, char **saveptr); 使用strtok解析提取字符串; 如aaa,bbb,ccc,ddd, delim=",", 一次分割出字符串"aaa", “bbb”, “ccc”, “ddd”, 使用的时候第原创 2022-03-22 22:59:56 · 190 阅读 · 0 评论 -
fgets函数
今天再使用fgets读文件配置的时候,使用fgetes读取 br=br-lan 使用fgets读取一行并进行分割得到ifname=br-lan, 但是由于fgets在读取行的时候也会把换行符\n读取,导致读取到的ifname=br-lan\n\0.这个时候,如果使用拼接文件路径,如/sys/class/net/%s/beidge的时候,就会出现错误,使用stat判断文件是否存在就会出错。原因就是带有换行符,导致出现的问题。 正确的解决方法是把换行符换成\0之后再进行字符串的处理。 //br=br-lan原创 2022-03-22 22:33:17 · 229 阅读 · 0 评论 -
内核双向循环链表
1.内核链表介绍 在Linux内核中提供了一种通用的双向循环链表来组织数据,这种链表方便使用,且只有一个头文件,方便移植。文件路径:include\linux\list.h。 头结点表示: /** * The linkage struct for list nodes. This struct must be part of your * to-be-linked struct. struct list_head is required for both the head of the * list原创 2022-03-05 16:44:25 · 300 阅读 · 0 评论 -
动态库与静态库
在打包函数工具的时候,我们一般有两种方式,生成静态库或者动态库的方式。 静态库和动态库都是以lib开头命名。 静态库以.a结尾,动态库以.so结尾。 如libhello.so, hello是库的名称。 生成静态库(libhello.a): gcc -c hello.c ar cr libhello.a hello.o gcc -o main main.c -L. -lhello 生成动态库(libhello.so) gcc -c hello.c gcc -shared -fPIC -o libhel原创 2022-03-01 11:20:22 · 123 阅读 · 0 评论 -
unix socket抽象路径名
在使用AF_UNIX编写本地套接字进行进程间通信的时候,我们需要对struct sockaddr_un中的sun_path域填充一个文件名,在bind的时候会自动创建一个S_IFSOCK类型的文件。如果文件存在就会报错。所以每次创建之前需要先把存在同名的文件删除。但是删除一个文件,可能是别的程序需要的,就会导致很多其他的问题。 Linux引入了一种称为抽象路径名的机制,这种方式不会真的创建一个文件,只会在虚拟文件系统中创建一个标识,可以很好的避免名字冲突,当套接字关闭的时候,会自动删除一个路径对应的标识,不原创 2022-01-16 21:20:10 · 1270 阅读 · 0 评论 -
命名UNIX域套接字
在网络上进行通信的时候,我们一般会使用socket进行通信,实际上socket也可以用于同一台主机上的两个进程间的通信,称为本地套接字。本地套接字具有如下的优势: UNIX域套接字仅仅复制数据,不执行协议处理,不需要添加或删除网络报头,无需计算校验和。 UNIX域数据报服务是可靠的,不会丢失也不会传递出错。 UNIX套接字的地址有struct sockaddr_un结构体表示。 #include <sys/un.h> struct sockaddr_un { sa_family_t su原创 2022-01-14 22:18:03 · 486 阅读 · 0 评论 -
GNU C扩展之语句表达式
语句表达式 GNU C对C语言标准作了扩展,允许在一个表达式里内嵌语句,允许在表达式内部使用局部变量、for循环和goto跳转语句。 ({表达式1; 表达式2; 表达式3}) 表达式最外面使用(),里面使用{}括起来代码块。 #include <stdio.h> int main() { int sum = 0; sum = ({ int s = 0; for(原创 2021-12-11 23:18:23 · 203 阅读 · 0 评论 -
c语言指定初始化
GUN C标准特性原创 2021-12-10 22:12:44 · 761 阅读 · 0 评论