creat函数
描述
函数创建一个文件。
实例
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define file_path "/home/hz/c_program/linux/create.txt"
int main(void)
{
creat(file_path,O_CREAT);
}
文件创建标志和文件状态 全列表
flag | describe |
---|---|
O_APPEND | 文件在追加模式打开。在write(2) |
O_ASYNC | 使能信号驱动I/O:生成一个信号 |
O_CLOEXEC | 在新的文件描述符,关闭close-on-exec 标志符.指定这个标志,允许程序在设置FD_CLOEXE标识时,附加的fcntl(2) F_SETFD操作 |
O_CREAT | 如果路径名不存在,通过常规文件。新文件的user ID设置为进程的user ID。通常通过进程的umask可以修改模式。如果默认ACL缺失,创建的文件模式为(mode & ~umask),常用mode宏有:S_IRWXU(文件拥有者有读、写、执行权限)、S_IRWXG(组成员有读、写、执行权限)、S_IRWXO(其他成员有读、写、执行权限) |
open函数
open函数系统调用通过指令路径(pathname)打开文件。如果指定文件不存在,它可选创建通过open(flags被指定为O_CREAT).
描述
open,openat,creat 函数 是打开一个文件。
返回值
open函数的返回值是一个文件描述符,一个小的、非负整数,如果返回-1出现错误。打开文件后,就可以被其他系统调用(read(2),write(2),lseek(2),fcntl(2),etc.)所使用。成功调用返回的文件描述符将是当前未为进程打开的编号最低的文件描述符。
默认情况下,新的文件描述符保持打开,是设置通过一个execve函数(i.e.,FD_CLOEXEC文件描述符意思是,在fcntl(2)未能够初始化).
库和原型
GUN的发布c运行库版本:glibc 2.10:_POSIX_C_SOURCE >=200809L
#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);
int creat(const char *pathname,mode_t mode);
int openat(int dirfd,const char * pathname,int flags);
int openat(int dirfd,const char * pathname,int flags,mode_t mode);
参数
pathname: 为文件路径
flag:参数flags必须是接下来访问模式之一(O_RDONLY,O_WRONLY,O_RDWD)。这将打开文件只读,只写,或可读可写。
示例
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define file_path "/home/hz/c_program/linux/txt.txt"
int main(void)
{
open(file_path,O_CREAT);
// open(file_path,O_RDWD);
}
执行程序
hz@titan1:~/c_program/linux$ ls
1 atoi.c make open_readme.md string_cmp.c uart_test.c
232_test.c fcntl.c open.c process.c uart x
hz@titan1:~/c_program/linux$ gcc open.c -o open
hz@titan1:~/c_program/linux$ ./open
hz@titan1:~/c_program/linux$ ls
1 atoi.c make open.c process.c txt.txt uart_test.c
232_test.c fcntl.c open open_readme.md string_cmp.c uart x
hz@titan1:~/c_program/linux$ ll txt.txt
-rwx-wx--- 1 hz hz 0 9月 28 14:04 txt.txt*
hz@titan1:~/c_program/linux$ cat txt.txt
write函数
描述
write函数将buf数据的缓冲区写conut个字节写入可写的文件的文件描述符fd中。
返回值:成功返回实际写入的字符串。不成功返回-1,将错误信息写入error变量中。
格式
#include <unistd.h>
ssize_t write(int fd,const void *buf,size_t count);
实例
read函数
描述
read函数将可打开的文件中读取count个字节存储到buf数据缓冲区中。
返回值:如果成功读取返回读取的字节数,
格式
#include <unistd.h>
ssize_t read(int fd,void *buf,size_t count);
```