我是Linux内核编程的新手。 我写了一个简单的内核模块和char设备。 我定义了设备的open(),release(),read()和write()方法。 我用insmod初始化我的模块,并用rmmod将其删除,所有工作都正确。 现在我想检查设备的read()write()方法。 你能告诉我如何编写一个用户程序,它应该实现我的字符设备的读/写方法? 谢谢。
当你有一个字符设备,你想要检查你的write
系统调用的实现,你可以做的第一个测试是:
echo
shell命令写入: echo 42 > /dev/char_device
cat
命令或指定的字节数与head
命令(或dd
)一起读取,并在必要时使用od -x
转换为十六进制: head -8 /dev/char_device | od -x
head -8 /dev/char_device | od -x
现在用C写一个程序,用fopen
打开文件,用fread
和fwrite
读写数据; 你也可以使用write
系统调用,但是fread
和fwrite
是包装read
标准C库函数。
如果尚未自动创建,则必须在/dev
创建设备文件。 然后,您可以编写一个程序,打开并读取/写入该文件。