1.带参程序
这里传递的是字符串,argc表示有几个参数要被传递,其中可执行文件本身也会当做一个参数
#include "stdio.h"
int main(int argc, char **argv)
{
int i = 0;
for(i = 0; i < argc; i++)
printf("argv[%d] = %s\n", i, argv[i]);
return 0;
}
2.带变量的内核模块
这里是传递一个变量给到程序
基本类型有:
bool :布尔类型
invbool:颠倒了值的bool类型;
charp :字符指针类型,内存为用户提供的字符串分配;(char *)
int :整型
long :长整型
short :短整型
uint :无符号整型(unsigned int)
ulong :无符号长整型(unsigned long)
ushort :无符号短整型(unsigned short)
指针类只能char*,对应名字 charp .
#include <linux/module.h>
#include <linux/init.h>
static int num = 5;
module_param(num, int, S_IRUGO);
static int __init sum_init(void)
{
printk("num:%d\n",num);
return 0;
}
static void __exit sum_exit(void)
{
printk("I'll be leaving, bye!\n");
}
module_init(sum_init);
module_exit(sum_exit);
MODULE_LICENSE("GPL");
3.带数组的内核模块
#include <linux/module.h>
#include <linux/init.h>
static int para[8] = {1,2,3,4};
static int n_para = 3;
module_param_array(para , int , &n_para , S_IRUGO);
static int __init sum_init(void)
{
int i;
for (i = 0; i < 8; i++)
printk(KERN_ALERT "para[%d] : %d \n", i, para[i]);
for(i = 0; i < n_para; i++)
printk(KERN_ALERT "para[%d] : %d \n", i, para[i]);
return 0;
}
static void __exit sum_exit(void)
{
printk("I'll be leaving, bye!\n");
}
module_init(sum_init);
module_exit(sum_exit);
MODULE_LICENSE("GPL");