日期:2014-05-16  浏览次数:20601 次

内核态下 如何从文本文档中一行一行获取数据
之前是将文本文档中的数据一次性读入字符串中,如何整行获取数据呢?

------解决方案--------------------
每次遇到换行符,就处理呗。
然后读入下一行。
------解决方案--------------------
fgets
------解决方案--------------------
探讨

引用:
fgets

内核态下也是用这个读取吗?

------解决方案--------------------
探讨
时间不允许啊

------解决方案--------------------
一般来说是不推荐在内核里面直接操作文件。
操作文件在用户程序做比较好吧,
你是用来做什么的,可以考虑变通一下吧
------解决方案--------------------
探讨

大家在内核态下读写文件一般是怎么操作的

------解决方案--------------------
再复杂的东西也是人写出来的,你理解fgets的机制自己用内核io实现一套就是了。

给fd外边套个FILE,FILE里带上个buffer。

每次fgets调用,如果buffer里还有bytes,那么直接写到用户buffer,如果没找到\n那么再read一堆bytes进buffer,继续向用户buffer写,如果用户buffer写满就停下不找\n了,直接写上\0返回。 如果找到\n了,那么立即写上\0返回。

fgets的实现你没看过么? 不就是为了减少系统调用次数么, 你希望读一行, 那么我们就读上1000B,然后去里边找\n返回给用户一行,不就是这样么。