c语言
文章平均质量分 62
_lv_
这个作者很懒,什么都没留下…
展开
-
sizeof 获取 extern 数组长度
sizeof是获取数组元素个数的常用运算符::在中期望通过运算符获取中元素个数,然而这么做是错误的,编译时无法通过,错误提示类似这类。造成这一问题的原因在于,**是在编译时计算的,而C/C++的编译是以文件为基本单位的**。在编译文件时,编译器是不可能知道定义在文件中数组具体信息的,只根据文件中的声明是无法确定的具体大小的,因此,就算某些编译器编译时不报错,得到的结果也是...转载 2022-06-17 14:02:55 · 771 阅读 · 2 评论 -
Linux IPC 进程间通信——信号量sem
Linux 进程间通信——信号量sem原创 2022-01-28 17:37:29 · 2122 阅读 · 0 评论 -
Linux IPC 进程间通信——信号signal
首先认识几个相关的信号函数,signal、kill、raise、pause。一、相关函数分析signal函数void (*signal(int signum,void(* handler)(int)))(int);说明:当前进程收到signum对应的信号之后,会执行handler指向的函数。其中signum有#define SIGHUP 1 /* Hangup (POSIX). */#define SIGINT ...原创 2022-01-11 10:00:45 · 439 阅读 · 0 评论 -
Linux IPC 进程间通信——消息队列message
消息队列是消息的连接表,存储在内核中。本实例主要实现消息队列方式进行进程间通信,接收端收到消息之后,立马转发给发送端;发送端发出消息之后,立马监听接收端回馈的消息,实现一个双向通信示例。一、示例发送端client.c#include <stdio.h> #include <string.h> #include <stdlib.h> #include <errno.h> #include <sys/types....原创 2022-01-08 16:34:29 · 1136 阅读 · 0 评论 -
Linux IPC 进程之间通信——共享内存shared Memory
服务端代码 shmServer.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/shm.h>#include <sys/types.h>#include <sys/ipc.h>#include <fcntl.h>#include <string.h>#define...原创 2022-01-08 09:26:43 · 217 阅读 · 0 评论 -
Linux IPC 进程之间通信——无名管道pipe实例
无名管道只限于有亲缘关系的父子进程之间进行同行#include <unistd.h> #include <sys/types.h>#include <sys/wait.h>#include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h>int main() { int pipe_fd[2];原创 2022-01-06 20:07:48 · 1121 阅读 · 0 评论 -
Linux IPC 进程之间通信——有名管道FIFO实例
写端fifo_write.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <fcntl.h>#include <sys/stat.h>#include <string.h>#define FIFO_PATH "/tmp/myfifo"int main(){ int pip原创 2022-01-06 19:43:30 · 744 阅读 · 0 评论 -
回调函数实例
callback可以实现模块之间通信,底层实现调用,上层实现具体的回调函数内容底层函数实现#include <stdio.h>int runCallback(int (*func)(int a, int b)){ int a,b; a = 3; b = 4; return func(a,b);}头文件#ifndef __RUNCALLBACK__H#define __RUNCALLBACK__Hint runCallback(i原创 2022-01-04 14:10:34 · 306 阅读 · 0 评论 -
Linux 驱动创建Proc文件系统接口
目录 它有什么作用呢? 如何实现?Linux的procfs文件系统是一个虚拟文件系统,Linux不只有一个虚拟文件系统,sysfs和debugfs也是虚拟文件系统,sysfs在procfs的基础上进行了优化。虚拟文件系统在系统运行时创建,存在于内存。 它有什么作用呢?它是一种在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。...原创 2021-09-09 19:47:06 · 924 阅读 · 1 评论 -
Linux-僵尸进程产生与处理
背景父进程创建子进程之后,父进程没有等待该子进程的退出,子进程就会成为僵尸进程,如果父进程也退出,这个时候子进程也可以被init进程回收,释放资源。如果父进程不退出,子进程占用的资源将永远不会被释放。产生以下示例是一个产生僵尸进程的典型例子#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(int argc, char **argv) { p...原创 2021-09-05 21:04:23 · 318 阅读 · 0 评论 -
Linux 内核模块互调
如果有两个模块A和B,要想实现互调,必须进行声明和引用。下面以A调用B的funcA为例模块A 定义函数 void funcA(void){ ...}注意这里函数返回值不能定义为static型 声明函数为外部可用 EXPORT_SYMBOL(funcA);模块B 声明函数 extern funcA(void); 函数调用 static void funcB(void){ ... funcA();}...原创 2021-08-18 15:49:19 · 134 阅读 · 0 评论 -
使用enum枚举量初始化数组
enum { _TEST_A, _TEST_B, _TEST_C, _TEST_D, _TEST_E, _TEST_MAX,};static char g_test_table[_TEST_MAX] = { [_TEST_D] = 'd', [_TEST_A] = 'a', [_TEST_B] =.原创 2021-06-10 15:57:26 · 957 阅读 · 0 评论