???????????????????????????????????? C ??????????У???????????Linux????????????????????????????????????????С???????????????е????bug?????????????????????????????????????????????С??????д??????????????????????????????????????????????????????Linux????????????????????C??????????????????κ???????????????????????????????????????????

??????????????????????д???????飺??ο?????????????????????????????????????——???磬????????????????????????????????????????????Σ?LCTT?????????????????????????????????????????????棬????????????????????????????????????????????????????????е???????????????????Linux????????????????????????????饗???????????????????????????????????????棬????????????????????????????????????????????????
???????????У?????????????????????????????????/dev/reverse?豸??д????豸?????????????????????????“Hello World”????“World Hello”???????????????????????????????????????????????????????????????????????????????Щ??????????????????棺???????е????bug???????????????????????????????п?????????????????????????????????????????????????????????????????????????н??????顣
??????????????root???
???????????£?/dev/reverse???root???????????????????sudo?????????????????????????????????????????????????/lib/udev/rules.d/99-reverse.rules?????
????SUBSYSTEM=="misc"?? KERNEL=="reverse"?? MODE="0666"
?????????????2?????顣?÷?root????????豸?????????????????????????????????????????????????????root??????ж???????????????????????
???????????
??????????????Linux??????????Cд????????????????????????????????????????????????????????棨???磬reverse.c???????????????????????????GitHub??——??????????????е??Щ??Ρ???????????????????Щ???????????????????????????????飺
????#include <linux/init.h>
????#include <linux/kernel.h>
????#include <linux/module.h>
????MODULE_LICENSE("GPL");
????MODULE_AUTHOR("Valentine Sinitsyn <valentine.sinitsyn@gmail.com>");
????MODULE_DESCRIPTION("In-kernel phrase reverser");
??????????ж?????????????MODULE_LICENSE()????????????????????????????GPL???????????????????????????????GPL???????磬“Proprietary”[???]?????Щ?????????????????????в????á?
???????????д??????
?????????????????????????????д????????????????????????????ɡ???????????????????????????????????????????????????????????????????У????????????????н?????????
??????????????USB???? —— ???libusb??
??????????????????? —— ????FUSE??
???????????Netfilter —— ???libnetfilter_queue??????????????
?????????????????????????????????????????????????????????????????
????????????????????????????main()????????Linux???????????顣????????????????????????????????????????
????static int __init reverse_init(void)
????{
????printk(KERN_INFO "reverse device has been registered ");
????return 0;
????}
????static void __exit reverse_exit(void)
????{
????printk(KERN_INFO "reverse device has been unregistered ");
????}
????module_init(reverse_init);
????module_exit(reverse_exit);