Я могу использовать strtok () в Модуле Ядра Linux?

Я должен сделать синтаксический анализ на данных, записанных в мой модуль и использование strtok (), функция string.h была бы полезна. Однако я попробовал

#include <string.h>

и

#include <linux/string.h>

без успеха. Действительно ли это возможно? Или я должен буду записать свою собственную функцию strtok?

Спасибо

7
задан cheesysam 11 February 2010 в 18:19
поделиться

2 ответа

В действующем API ядра Linux нет strtok . Вам придется написать свой собственный. См. Раздел Управление строкой в API ядра Linux.

Кстати, я бы посоветовал держаться подальше от strtok (или чего-то подобного strtok ). Он не реентерабелен и небезопасен в коде ядра (который по своей природе многопоточный).

Если вы собираетесь дублировать функцию, подумайте о дублировании strtok_r .

7
ответ дан 6 December 2019 в 07:26
поделиться

В последней библиотеке ядра есть это, которое может делать то, что вам нужно:

/**
 * strsep - Split a string into tokens
 * @s: The string to be searched
 * @ct: The characters to search for
 *
 * strsep() updates @s to point after the token, ready for the next call.
 *
 * It returns empty tokens, too, behaving exactly like the libc function
 * of that name. In fact, it was stolen from glibc2 and de-fancy-fied.
 * Same semantics, slimmer shape. ;)
 */
15
ответ дан 6 December 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: