使用open函数打开文件
首先,新建一个文件:
kenneth-X556UJ% touch test
kenneth-X556UJ% ls
test
kenneth-X556UJ%
创建一个open.c:
kenneth-X556UJ% vi open.c
open.c的内容如下:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(void)
{
// 文件描述符
int fd;
// 新创建的test路径
char *file = "./test";
if ((fd = open(file, O_RDONLY)) < 0)
{
printf("open %s failed!\n", file);
}
printf("filed %s is %d\n", file, fd);
return 0;
}
编译,执行
kenneth-X556UJ% gcc open.c -o open
kenneth-X556UJ% ./open
filed ./test is 3
kenneth-X556UJ%
使用open函数创建文件
我们将test文件删除,
kenneth-X556UJ% rm test
kenneth-X556UJ% ls
open open.c
kenneth-X556UJ%
继续执行open
kenneth-X556UJ% ./open
open ./test failed!
filed ./test is -1
kenneth-X556UJ%
发现打开文件失败,我们修改源代码,是程序可以通过open函数创建文件
修改内容如下:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(void)
{
int fd; // 文件描述符
char *file = "./test"; // 新创建的test路径
if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC, 0777)) < 0)
{
printf("open %s failed!\n", file);
}
printf("filed %s is %d\n", file, fd);
return 0;
}
重新编译,并且执行,
kenneth-X556UJ% gcc open.c -o open
kenneth-X556UJ% ./open
filed ./test is 3
kenneth-X556UJ% ls
open open.c test
kenneth-X556UJ%