gpt4 book ai didi

c - 在 Linux 内核函数中的缓冲区中查找子字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:15 26 4
gpt4 key购买 nike

我是 Linux 内核开发的新手,我有一个我认为以前没有解决的问题:

How do you find a sub-string within a buffer inside a kernel function?

想象一下,我将一个大小合适的文件读入缓冲区(ls -lart 表示文件大小约为 3000)。我想查找并打印该缓冲区中存在子字符串的行。因为我们在内核中,所以大多数标准的 stdio.hstring.h 函数,如 strstrfgets 都是无法使用。当前有很多堆栈溢出问题,例如:Check substring exists in a string in C不那么有效。但是,我确实发现了一个问题:Check for substring in a buffer ,但是使用 memmem() 是最好的选择吗?虽然我可以作弊,并在我正在查找的缓冲区中手动硬编码,但这不是程序员的方式。

最佳答案

strstr 在 Linux 内核中可用。它在 linux/string.h 中声明。

但是,如果您将"file"读入的缓冲区不是 nul 终止的,则使用 memmem 可能会更安全。

如果要搜索整行,可以在要搜索的字符串的开头和结尾添加\n

或者,如果您不想包含要搜索的完整行,您可以倒回(使用 char 指针或类似指针)到 \nstrstr 的结果之前。

如果要打印此字符串,请使用 linux/printk.h 中的 printk。它类似于 printf,只是它对 %p 格式进行了一些扩展——尽管您可能不必为打印指针而烦恼。

关于c - 在 Linux 内核函数中的缓冲区中查找子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58367945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com