📅  最后修改于: 2023-12-03 15:33:16.392000             🧑  作者: Mango
在Linux/Unix系统中,open()
函数是打开一个文件或者创建一个新文件的系统调用。在打开一个已经存在的文件时,可以使用open()
函数的默认参数,而在创建一个新文件时,需要使用O_CREAT
参数。
使用O_CREAT
参数可以创建一个新文件,如果文件不存在,则会自动创建一个新文件。如果文件已经存在,则O_CREAT
参数不会对文件进行修改,而是直接打开该文件。此外,如果使用了O_CREAT
参数,则必须同时使用O_WRONLY
或O_RDWR
参数,否则会得到一个EINVAL
错误。
下面是open()
函数使用O_CREAT
参数的示例代码:
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
char *filename = "example.txt";
int fd = open(filename, O_WRONLY|O_CREAT, 0666);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
}
const char *text = "Hello World!\n";
size_t len = strlen(text);
if (write(fd, text, len) != len) {
perror("write");
exit(EXIT_FAILURE);
}
if (close(fd) == -1) {
perror("close");
exit(EXIT_FAILURE);
}
return EXIT_SUCCESS;
}
在上面的示例代码中,我们指定了O_CREAT
参数来创建一个新文件,并同时使用了O_WRONLY
参数来打开该文件并以只写的方式写入数据。如果文件不存在,则会创建一个新文件,否则会打开该文件。最后,我们将文件关闭。
O_CREAT
参数可以让我们在使用open()
函数时创建一个新文件,通常需要与O_WRONLY
或O_RDWR
参数一同使用。在操作系统开发和文件处理方面,open()
函数是一种非常重要和常用的系统调用,因此程序员应该掌握好它的使用方法。