总体概述:
在linux系统环境下,可以通过touch命令创建一个空文件,但这是使用命令创建的方式。我们有时需要在程序中创建文件,这就需要用到creat和access函数。当然也可以用open函数,但open的创建方式不在本章介绍。
函数语法:
creat函数语法:int creat(const char *pathname, mode_t mode);
access函数语法:int access(const char *pathname, int mode);
函数作用:
creat函数的作用:用于创建一个文件调用create()相当于调用open(),flag标志为O_CREAT|O_WRONLY|O_TRUNC
。
access函数的作用:access()检查调用进程是否可以访问文件路径名。mode参数为F_OK,可以测试文件是否存在。
参数介绍:
creat函数参数介绍:
-
输入参数:pathname => 文件路径名。
-
输入参数:mode => 文件的访问模式。
-
返回值:成功:已创建的文件描述符;失败:-1。
access函数参数介绍:
-
输入参数:pathname => 文件路径名。
-
返回值:成功:0(所有请求的权限都被授予,或者模式为F_OK并且文件存在);失败:-1。
代码示例:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char **argv)
{
if (argc != 2) {
printf("usage: %s <pathname>.\n", argv[0]);
return -1;
}
if (access(argv[1], F_OK) == 0) {
printf("File: %s already exist.\n", argv[1]);
return -1;
}
mode_t permissions = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH;
return (creat(argv[1], permissions) == -1) ? -1 : 0;
}
使用方法:
$ mkdir ~/clanguage && cd ~/clanguage
$ touch creat.c 注:创建并拷贝代码到creat.c,保存退出。
$ gcc -o creat creat.c
$ ./creat hello
运行效果:
注:由于作者能力有限,文中表述难免有错误。如果发现文中错误之处,敬请广大好友批评指正。