赞
踩
春天来了,除了工作学习,大家也要注意锻炼身体,多出去运动运动。
上周末在元大都遗址公园海棠花溪拍的海棠花。
进入正题。
O_DIRECT和O_SYNC是系统调用open的flag参数。通过指定open的flag参数,以特定的文件描述符打开某一文件。
这两个flag会对写盘的性能有很大的影响,因此对这两个flag做一些详细的了解。
先看一个open函数的使用例子.
1
2
3
4
5
6
|
/* Open new or existing file for reading and wrting,
sync io and no buffer io; file permissions read+
write for owner, nothing for all others */
fd = open(
"myfile"
, O_RDWR | O_CREAT | O_SYNC | O_DIRECT, S_IRUSR | S_IWUSR);
if
(fd == -1)
errExit(
"open"
);
|
不遵守上述任一限制均将导致EINVAL错误。
功能:强制刷新内核缓冲区到输出文件。这是有必要的,因为为了数据安全,需要确保将数据真正写入磁盘或者磁盘的硬件告诉缓存中。
我们先熟悉一下同步IO相关定义和系统调用。
1 fsync
1
2
|
#include
int
fsync(
int
fd);
|
1
2
|
#include
int
fdatasync(
int
fd);
|
1
2
|
#include
void
sync(
void
);
|
1
|
fd = open(pathname, O_WRONLY | O_SYNC);
|
虽然题目还是UNIX高级环境变成(xx),但是打算把所阅读和参考的书换成《Linux/UNIX系统编程手册》。感觉这本书内容更新一点。
工作很忙,周末大部分时间都在外面活动,跑步拍照,虽然只是简单的读书这一篇也是拖了又拖才敲完。
参考:
《Linux/UNIX系统编程手册(上册)》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。