记录本项目中用到的系统调用与C库函数-1

  • open

  • close

  • fopen

  • fclose

  • fprintf

  • flock

  • snprintf

  • 重定向

    • dup
  • dup2

记录本项目中用到的系统调用与C库函数

==================================================================================

读写文件相关


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所指的文件做各种锁定或解除锁定的动作。

此函数只能锁定整个文件,无法锁定文件的某一区域。

  • 函数定义

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

  • 返回值

如果成功,则返回写入的字符总数,否则返回一个负数。

flock

  • 头文件

#include <sys/file.h>

  • 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。

此函数只能锁定整个文件,无法锁定文件的某一区域。

  • 函数定义

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

[外链图片转存中…(img-T1iTWiuO-1716224410137)]

[外链图片转存中…(img-FGftd98w-1716224410138)]

[外链图片转存中…(img-66Dbtvaq-1716224410138)]

更多笔记分享

[外链图片转存中…(img-ruYMhvmo-1716224410139)]

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值