-
open
-
close
-
fopen
-
fclose
-
fprintf
-
flock
-
snprintf
-
重定向
-
- dup
-
dup2
==================================================================================
write
- 头文件:
#include <unistd.h>
- 函数说明:
write系统调用,是把缓存区buf中的前nbytes字节写入到与文件描述符有关的文件中。
- 函数定义
//参数分别为 文件描述符、缓冲区、
size_t write(int flides, const void *buf, size_t nbytes);
- 返回值
write系统调用返回的是实际写入到文件中的字节数。
read
- 头文件:
#include <unistd.h>
- 函数说明:
read系统调用,是从与文件描述符flides相关联的文件中读取前nbytes字节的内容,并且写入到数据区buf中。
- 函数定义
size_t read(int flides, void *buf, size_t nbytes);
- 返回值
read系统调用返回的是实际读入的字节数。
open
- 头文件:
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
-
函数说明:
-
函数定义
int open(const *path, int oflags); //1
int open(const *path, int oflags, mode_t mode); //2
参数说明:
其中,oflags是由必需文件访问模式和可选模式一起构成的(通过按位或“|”):
必需部分:
-
O_RDONLY———-以只读方式打开
-
O_WRONLY———以只写方式打开
-
O_RDWR————以读写方式打开
可选部分:
-
O_CREAT————按照参数mode给出的访问模式创建文件
-
O_EXCL————–与O_CREAT一起使用,确保创建出文件,避免两个程序同时创建同一个文件,如文件存在则open调用失败
-
O_APPEND———-把写入数据追加在文件的末尾
-
O_TRUNC———–把文件长度设置为0,丢弃原有内容
在第一种调用方式上,加上了第三个参数mode,主要是搭配O_CREAT使用,同样地,这个参数规定了属主、同组和其他人对文件的文件操作权限。
-
文件属主
-
S_IRUSR———-读权限
-
S_IWUSR———写权限
-
S_IXUSR———-执行权限
-
文件所属组
-
S_IRGRP———-读权限
-
S_IWGRP———写权限
-
S_IXGRP———-执行权限
-
其他人
-
S_IROTH———-读权限
-
S_IWOTH———写权限
-
S_IXOTH———-执行权限
另外,也可以用数字设定法:
0 : 无权限;
1 : 只执行;
2 : 只写;
4 : 只读。
这种权限设计实际上就是linux文件权限的设计。
- 返回值
open系统调用成功返回一个新的文件描述符,失败返回-1。
close
- 函数定义
#include <unistd.h>
int close(int flides);
- 函数说明:
终止文件描述符flides与其对应的文件间的联系,文件描述符被释放,可重新使用。
使用完文件描述符之后,要记得释放!
fopen
- 头文件:
#include <stdio.h>
- 函数说明:
C 库函数,使用给定的模式 mode 打开 filename 所指向的文件。
- 函数定义
FILE *fopen(const char *filename, const char *mode)
| “r” | 打开一个用于读取的文件。该文件必须存在。 |
| — | — |
| “w” | 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。 |
| “a” | 追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。 |
| “r+” | 打开一个用于更新的文件,可读取也可写入。该文件必须存在。 |
| “w+” | 创建一个用于读写的空文件。 |
| “a+” | 打开一个用于读取和追加的文件。 |
- 返回值
该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。
fclose
- 头文件:
#include <stdio.h>
- 函数说明:
C 库函数 int fclose(FILE *stream) 关闭流 stream, 并且刷新所有的缓冲区。
- 函数定义
// stream – 这是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流。
int fclose(FILE *stream)
- 返回值
如果流成功关闭,则该方法返回零。如果失败,则返回 EOF。
fprintf
- 头文件:
#include <stdio.h>
- 函数说明:
C 库函数, 发送格式化输出到流 stream 中。
- 函数定义
int fprintf(FILE *stream, const char *format, …)
- 返回值
如果成功,则返回写入的字符总数,否则返回一个负数。
flock
- 头文件
#include <sys/file.h>
- 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。
此函数只能锁定整个文件,无法锁定文件的某一区域。
- 函数定义
读者福利
由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴
更多笔记分享
- 返回值
如果成功,则返回写入的字符总数,否则返回一个负数。
flock
- 头文件
#include <sys/file.h>
- 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。
此函数只能锁定整个文件,无法锁定文件的某一区域。
- 函数定义
读者福利
由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴
[外链图片转存中…(img-T1iTWiuO-1716224410137)]
[外链图片转存中…(img-FGftd98w-1716224410138)]
[外链图片转存中…(img-66Dbtvaq-1716224410138)]
更多笔记分享
[外链图片转存中…(img-ruYMhvmo-1716224410139)]