При разработке модуля ядра в Linux использование стандартной библиотеки C не допускается.
Однако, если мне нужно использовать некоторые общие функции, такие как strcat()
, куда мне нужно перейти?
Альтернатива stdlib.h в ядре Linux?
Ответ 1
Независимо от того, что не реализовано в ядре Linux, вы должны реализовать себя или заимствовать из другого модуля ядра с открытым исходным кодом. Однако вы обнаружите, что strcat
реализован в ядре.
См. документацию API ядра. В частности, раздел Basic C Library Functions для вашего общего вопроса и String Manipulation для вашего конкретного вопроса о strcat
.
Вы хотите включить linux/string.h
.
Я не знаю, почему в документации API ядра фактически не отображается файл заголовка, который вы должны включить, чтобы получить функцию. Но если вы ищете что-то, вы можете ограничить свой поиск /include/linux
, потому что это то, где заголовочные файлы идут, если у них есть функции, которые разделяются между разными частями ядра.
Заголовочные файлы вне /include/linux
содержат определения только для исходных файлов, находящихся в том же каталоге, что и заголовок. Исключением является /arch/.../include
, который будет содержать заголовки, специфичные для архитектуры, а не независимые от платформы.
Ответ 2
Извините @eq - думает о другой функции.
Почему бы не
void (char *d, const char *s);
{
if (*d)
{
for (; *d; ++d) {} ;
--d;
}
strcpy(d, s);
}
Я мог бы сделать strcpy
, если вы пожелаете