当前位置: 技术问答>linux和unix
请教unix里向文件里插入内容.
来源: 互联网 发布时间:2015-05-27
本文导语: 在unix下如何向文件里"插入"内容??是有特殊的调用?还是自己用read和write用苯方法实现???那么当插入的时候内核里面是如何操作i节点的???它也是用苯的方法(读入然后重新写入)吗???请各位高手指教. | ...
在unix下如何向文件里"插入"内容??是有特殊的调用?还是自己用read和write用苯方法实现???那么当插入的时候内核里面是如何操作i节点的???它也是用苯的方法(读入然后重新写入)吗???请各位高手指教.
|
你可能已经注意到象swap、oracle数据库等等都是推荐使用独立的分区来放置数据,而不是文件。这样做的目的就是提高效率。至于他们是怎样实现,我就不知道了,那是不同的算法的问题。就目前文件系统的实现来讲,只能是移动、插入。
|
写了9张纸的一篇文章,要在第三张插入内容,只能从第三张开始全部重写,如果不够再加几张纸。
其实文件系统没有插入这样的操作,只是按照操作系统的要求写入内容,位置和长度由操作系统接口给出。它并不知道这些内容是一样还是改变了。移动、写入这样的操作是应用完成的。移动就是写入,只不过内容是原来文件的部分内容。
硬盘是块设备,文件系统可以不是。我们是跟文件系统打交道,而且是提供操作系统接口,不需要考虑块这样层面的东西。应用面向的是文件,连续的字符流。
其实文件系统没有插入这样的操作,只是按照操作系统的要求写入内容,位置和长度由操作系统接口给出。它并不知道这些内容是一样还是改变了。移动、写入这样的操作是应用完成的。移动就是写入,只不过内容是原来文件的部分内容。
硬盘是块设备,文件系统可以不是。我们是跟文件系统打交道,而且是提供操作系统接口,不需要考虑块这样层面的东西。应用面向的是文件,连续的字符流。
|
笨办法是唯一的办法。
|
在unix下应该没有对文件的插入的系统调用,对文件的插入也是不合适的做法,我认为。还有,对文件作修改,肯定要改变i节点结构中的相关信息。要是真的必须要对文件插入的话,那只能用读入-追加-读入剩余部分这样的办法了吧。
|
为了节省内存可以使用临时文件,修改完成后再将临时文件更名为正式文件。
|
有些数据库系统是绕过文件系统的,有些简单的依赖文件系统,但插入记录不是在中间插入点,普遍都是在末尾的。