什么是C语言中的模块? 一个类似的问题已经出现在C++中,但是答案和问题本身并不令人满意。我读过 C文件< /> >(),其中包含了 >代码>,并将其静态函数传递给模块>(IT)>代码> >代码>模块>退出(FO)< />代码>。 那么,在这种情况下,文件,尤其是这两种方法,模块的一般用途是什么呢。第1.1节提到:

什么是C语言中的模块? 一个类似的问题已经出现在C++中,但是答案和问题本身并不令人满意。我读过 C文件< /> >(),其中包含了 >代码>,并将其静态函数传递给模块>(IT)>代码> >代码>模块>退出(FO)< />代码>。 那么,在这种情况下,文件,尤其是这两种方法,模块的一般用途是什么呢。第1.1节提到:,c,linux-kernel,C,Linux Kernel,因此,您需要编写一个内核模块。[…]现在你想去 真正的行动在哪里,内核模块到底是什么?模块 是可以加载和卸载到内核中的代码片段 根据要求。它们扩展了内核的功能[…]。对于 例如,一种类型的模块是设备驱动程序,它允许 内核访问连接到系统的硬件 然后,在第2.3节中: 宏module_init()和module_exit()宏初始化和清理函数 例如: module_init(hello_2_init); module_exit(hello_2_exit); 其中,这两个dymmy函数都调用prin

因此,您需要编写一个内核模块。[…]现在你想去 真正的行动在哪里,内核模块到底是什么?模块 是可以加载和卸载到内核中的代码片段 根据要求。它们扩展了内核的功能[…]。对于 例如,一种类型的模块是设备驱动程序,它允许 内核访问连接到系统的硬件

然后,在第2.3节中:

module_init()
module_exit()
宏初始化和清理函数

例如:

module_init(hello_2_init);
module_exit(hello_2_exit);
其中,这两个dymmy函数都调用
printk()说你好/再见世界

在第3.1.1节中:

模块总是以
init\u module()
或您用
module\u init()
调用指定的函数开头这是的输入函数 模块;它告诉内核模块提供什么功能,并设置内核在需要时运行模块的功能

所有模块都通过调用
cleanup\u module()
或函数来结束 您可以使用
module\u exit()
调用进行指定这是退出功能 对于模块;它撤销了entry函数所做的任何操作。它注销了 输入函数注册的功能


这是特定于Linux操作系统内核(模块)编程的,而不是一般的C/C++编程,我们可以说这有点类似于开发Linux内核程序的框架

Linux操作系统内核支持在内核中动态添加或删除程序。这些API用于编写此类内核程序(通常称为模块)

所以,当您尝试将模块插入内核时,会调用模块_init(),当我们在完成模块的工作后删除模块时,会调用模型_exit()来清理内容

下面是您可以尝试的最简单的内核模块

#include "linux/init.h" /*(use angle brackets here if it doesn't work)*/
#include "linux/module.h"

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void){
   printk(KERN_ALERT "Hello good try keep it up\n");
   return 0;
}

static void hello_exit(void){
     printk(KERN_ALERT "Goodbye .. take care\n");
}

module_init(hello_init);
module_exit(hello_exit); 

这与linux内核模块有关。如果我没有弄错的话,模块是一种可以用来扩展基本内核功能的东西,init/exit只是添加/删除附加功能。