今天我们来简单的介绍几个系统调用的函数,属于文件IO,比如说open等,先来看看open,注意它要用到的几个头文件以及
它的格式
先vim open.c,在里面简单open一个文件,后面跟几个标志,O_RDWR、O_CREAT、O_TRUNC分别是读写、创建和截去。
如果fd<0,表示open文件失败了,errno返回错误码,strerror(errno)返回错误的原因。
先看看memset,它是个库函数,它的作用是清零,注意它的格式和头文件
我们现用memset将buf清零,然后把hello写到fd打开的文件中,然后将它read到buf中,再打印buf的内容,最后close掉文件fd。
此时编译运行open.c,为什么没有显示文件的内容呢?是因为当前的文件偏移量没有搞对,指针指在hello的末尾,当然也就读不到内容了。
这时我们需要将指针指向hello的开头,需要用到lseek这个系统调用
我们在read之前加上一段lseek
这样我们就成功read到了hello,而且test.txt这个文件原来没有的,也创建成功了
最后我们将rename,也就是在程序中将文件改名
我们在close文件之后,再将其进行改名,将test.txt改为test.log。
最后我们再执行,发现hello也读到了,test.txt也被我们改名为test.log了。