【发布时间】:2012-08-17 18:14:47
【问题描述】:
在 Linux 中开发内核模块时,不允许使用 C 标准库。
但是,如果我需要使用strcat() 等一些常用功能,我需要去哪里?
【问题讨论】:
在 Linux 中开发内核模块时,不允许使用 C 标准库。
但是,如果我需要使用strcat() 等一些常用功能,我需要去哪里?
【问题讨论】:
Linux 内核中没有实现的东西,你必须自己实现或者借用另一个开源内核模块。但是,您会发现strcat 是在内核中实现的。
请参阅kernel API 文档。特别是 Basic C Library Functions 部分用于您的一般问题,String Manipulation 部分用于您关于 strcat 的具体问题。
您需要包含linux/string.h。
我不知道为什么内核 API 文档实际上没有显示您必须包含的头文件才能获得该函数。但是,如果您正在寻找某些东西,则可以将搜索范围限制在 /include/linux,因为如果头文件具有在内核不同部分之间共享的功能,那么这就是头文件所在的位置。
/include/linux 之外的头文件仅包含与头文件位于同一目录中的源文件的定义。例外是/arch/.../include,它将包含特定于架构的标头,而不是独立于平台的标头。
【讨论】:
/include/linux 中搜索它。我在回答中添加了更多关于内核头文件的详细信息,以及为什么您可以将搜索限制在 /include/linux 及其子目录中。
抱歉@eq - 正在考虑另一个函数。
为什么不
void (char *d, const char *s);
{
if (*d)
{
for (; *d; ++d) {} ;
--d;
}
strcpy(d, s);
}
如果你愿意,我可以strcpy
【讨论】: