【发布时间】:2019-05-25 07:49:52
【问题描述】:
我实际上是 linux 内核模式编程的新手。 我必须从用户模式程序 test.c 获得输入, 并将其写入我的驱动程序内核 mydrv.c
我所做的是通过scanf获取一个字符串输入,并将其写为 写入(文件,输出,MAX_SIZE);
file 是一个设备,out 是输入字符串。 在 mydrv_write 中,我试图通过 strlen 获取输入的字符串长度, 但是每当我尝试实现它时进程就会终止 我在程序前面加了。
我猜输入字符串 out 没有正确进入内核。 那么如何获取内核内部的字符串长度呢?
【问题讨论】:
-
它是
write的 3d 参数,其中包含写入缓冲区的长度。相反MAX_SIZE你需要传递你写的字符串的实际长度。 -
您必须读取用户提供的尽可能多的字节,而
write()实际上可以连续拆分为多个调用。为此,您需要有一个缓冲区并了解用户输入时的结束标记。通常像你描述的那样使用 sysfs 节点。