常见系统调用总结

fcntl

操作文件描述符
<span style="font-size:18px;">#include <unistd.h>
#include <fcntl.h>
Int fcntl(int fd, int cmd, …);</span>


主要的三种用途:
A、 复制文件描述符 
F_DUPFD(long),返回新的文件描述符
B、 文件描述符标记位
目前唯一被操作的标记是FD_CLOEXEC
F_GETFD(void)
F_SETFD(long)
C、 文件状态标记
通过open设置的文件状态标记,可以通过fcntl修改,

open

openat()

<span style="font-size:18px;">#include <fcntl.h>
int openat(int dirfd, const char *pathname, int flags);
int openat(int dirfd, const char *pathname, int flags, mode_t mode);</span>
打开指定dirfd目录下的pathname文件路径
A、 openat()可以避免通过调用open()出现的竞争情况
B、 允许实现单个线程的CWD

dlopen(), dlsym(), dlclose(), dlerror() 

提供动态链接加载器的操作接口

ldopen操作动态链接库
<span style="font-size:18px;">void *dlopen(const char *filename, int flag);
#include <dlfcn.h></span>

dlsym()
<span style="font-size:18px;">void *dlsym(void *handle, const char *symbol);</span>

返回symbol所指的内存地址

Sync/syncfs/fsync/fdatasync

fsync:将指定 fd 上的文件数据、以及文件的属性保存到磁盘中,并阻塞直到保存完成。
fdatasync:只保证数据本身,不同步文件属性
syncfs:只同步包含指定fd的文件系统的修改
sync:将所有文件的修改(数据和属性)写入到底层文件系统,排入写队列
fdatasync 和 fsync 的作用类似,但是它只保证数据本身被保存到磁盘,但并不同步更新文件的属性(metadata,比如文件的被修改时间,以及文件的大小,等等),对于无须确保文件属性被同步写入的程序,这个调用的性能比同步 fsync 稍高一些。
还有一个条件更弱的调用 —— sync ,它只要求将所有修改过的块缓存区(包括文件数据和文件属性)排入到写队列,然后就返回,它并不等待实际写磁盘操作结束:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值