Linux中系统调用很多,但是再多也有几种不变的根本:创建,打开,写,读,关闭,删除,等最最基本的操作,就像人们所常说的,Linux上的一切我们都可以当做文件来处理,既然是文件,那么以上的几种操作就是必须的,还有一些高级的,我会陆续介绍。
想到这个函数,就想到了我们的open还不具备创建文件的能力之前,那时的creat是多么的辉煌,现在的open就像腾讯那样的霸道,什么都做,简直是百科全书。废话不多说了,介绍下creat()
位于#include <fcntl.h>
int creat(const char *pathname, mode_t mode);
成功返回为只写打开的文件描述符,若出错则返回-1.
注意:此函数等效于:
open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode);
下面给个例子
很奇怪我没有包含 fcntl.h头文件,程序并没有报错,希望了解内情的同志留个言,让俺也长下见识。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(void)
{
int fd = -1;
fd = creat("tmp.lock",00644);
if (0 > fd)
{
printf("errno:%s\n",strerror(errno));
}
else
{
close(fd);
}
printf("Execute ok: %d\n", fd); // 关闭之后再打印,fd的值竟然不变(测试才知道的)。
return 0;
}
同一个程序执行数次,所得到的结果没有变化,fd=3。
不过学了样东西,慢慢来吧,啥都得从头开始,是不。
open就不行了。
需要fcntl.h------{小弟真的很困惑,难道标准库中包含了creat,为什么 open就需要引用这个头文件?}
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
int main(void)
{
int fd = -1;
fd = open