Linux 是否在内核中使用sprintf之类的用户空间函数?
我正在为我的驱动程序创建/proc条目。因此,在read回调函数中,第一个参数是我们将用户数据写入的位置。我搜索了如何在其中写入数据,我可以看到每个人都在为此使用sprintf。我惊讶地看到它在内核空间中工作。然而,在内核空间中使用用户空间函数应该是错误的。此外,如果不使用strcpy、sprintf等任何用户空间函数,我也不知道如何在该位置进行编写。我使用的是内核版本3.9.10。请建议我如何在不使用sprintf或任何其他用户空间函数的情况下执行此操作。Linux 是否在内核中使用sprintf之类的用户空间函数?,linux,linux-kernel,linux-device-driver,Linux,Linux Kernel,Linux Device Driver,我正在为我的驱动程序创建/proc条目。因此,在read回调函数中,第一个参数是我们将用户数据写入的位置。我搜索了如何在其中写入数据,我可以看到每个人都在为此使用sprintf。我惊讶地看到它在内核空间中工作。然而,在内核空间中使用用户空间函数应该是错误的。此外,如果不使用strcpy、sprintf等任何用户空间函数,我也不知道如何在该位置进行编写。我使用的是内核版本3.9.10。请建议我如何在不使用sprintf或任何其他用户空间函数的情况下执行此操作。sprintf是Linux中的内核空间
sprintf
是Linux中的内核空间函数。它与它的用户空间名称完全分离,可能与它的工作方式相同,也可能与它的工作方式不同
仅仅因为用户空间中存在一个函数,并不意味着内核空间中同名的函数就不能使用。大多数“正常”用户空间函数在内核代码中没有意义,因此它们在内核中不可用 但是,一些函数,如
sprintf
、strcpy
或memcpy
在内核代码中很有用,因此内核实现了它们(或多或少完全实现),并使它们可供驱动程序使用。
请参阅和。如果您希望获得更快的响应,最好添加一些示例代码。您需要的是proc_create()。例如,请阅读内核文档树中的相关章节,并尝试编写一些代码。堆栈溢出不是一种免费的编程服务,因此生成一些代码,然后询问有关已生成代码的特定问题被认为是一种良好的行为。