一、open()
函数的原型
用man 2 open
可以得到open()
函数的原型的包含头文件如下所示:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);//文件已存在
int open(const char *pathname, int flags, mode_t mode);//文件不存在
二、实例
下面是一个简单的open()
函数的使用,对于参数flags比较常使用的有O_RDONLY、O_WRONLY、O_CREAT、O_APPEND:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char * argv[])
{
int fd;
char buf[1024] = "deng";
if(argc < 2)
{
printf("./app filename\n");
exit(1);
}
umask(0);
fd = open(argv[1], O_CREAT | O_RDWR, 0644);
if(fd < 0)
{
perror("open");
exit(1);
}
// fd = open(argv[1], O_RDWR | O_APPEND);
if(write(fd, buf, strlen(buf)) < 0)
{
perror("write");
exit(1);
}
printf("fd = %d\n", fd);
close(fd);
return 0;
}