标签: fsync

我需要在 f.close() 之前 os.fsync() 吗?

“python 的 file.flush() 到底在做什么?” 说你应该首先f.flush()然后os.fsync(f)确保数据写入磁盘。
此外,“在 Python 中,close() 是否意味着 flush()?” 声称f.close()意味着flush()

现在,问题是:我应该做

os.fsync(f)
f.close()
Run Code Online (Sandbox Code Playgroud)

或者,f.close()也意味着os.fsync()?

下面是Python的IO的文档中,Python的文件关闭的文档,和源代码。快速搜索“fsync”未返回任何相关信息。

python io flush fsync

5
推荐指数
1
解决办法
349
查看次数

fsync不会将数据写入文件

我有两个(POSIX)线程写入日志文件,如下所示:

pthread_mutex_lock(&log_mutex);
fprintf(LOG, "something...\n");
fsync(fileno(LOG));
pthread_mutex_unlock(&log_mutex);
Run Code Online (Sandbox Code Playgroud)

该文件被打开main()fopen()与模式"一".当进程正在运行时,我看不到文件中出现的任何内容,cat或者tail虽然在进程终止并且文件为fclose()-ed之后,这些行都在那里.

我究竟做错了什么?

c fsync

4
推荐指数
1
解决办法
1027
查看次数

在Linux中编写和读取相同的fd而不使用fsync

假设我在不执行fsync的情况下将块写入文件描述符,然后在一段时间后从同一个描述符中读取相同的块.它是保证,我会收到同样的信息?

该程序是单线程的,任何其他进程都不会随时访问该文件.

c linux fsync

3
推荐指数
1
解决办法
1448
查看次数

Linux中的git克隆fsync输入/输出错误

我正在尝试克隆tensorflow / models回购。我通过ssh连接到远程计算机。我尝试了许多解决该问题的建议,但没有一个对我有用。

git clone --recursive https://github.com/tensorflow/models.git
Cloning into 'models'...
remote: Counting objects: 1670, done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 1670 (delta 10), reused 0 (delta 0), pack-reused 1642
Receiving objects: 100% (1670/1670), 49.23 MiB | 8.44 MiB/s, done.
Resolving deltas: 100% (670/670), done.
fatal: fsync error on '/home/OFFICE/utk/projects/syntaxnet/models/.git/objects/pack/tmp_pack_2w67RB': Input/output error
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)

git fsync git-clone

2
推荐指数
1
解决办法
3252
查看次数

为什么使用fsync()刷新写入磁盘会加快访问速度?

我们需要尽可能多的应用程序,保证在报告记录持续存在时,它确实是.我明白你要这样做fsync(fd).但是,由于一些奇怪的原因,使用fsync()会加速写入磁盘的代码,而不是像预期的那样减慢速度.

一些示例测试代码返回以下结果:

no sync() seconds:0.013388   writes per second:0.000001 
   sync() seconds:0.006268   writes per second:0.000002
Run Code Online (Sandbox Code Playgroud)

以下是产生这些结果的代码:

#include <stdio.h>
#include <fcntl.h>
#include <time.h>
#include <unistd.h>

void withSync() {
    int f = open( "/tmp/t8" , O_RDWR | O_CREAT );
    lseek (f, 0, SEEK_SET );
    int records = 10*1000;
    clock_t ustart = clock();
    for(int i = 0; i < records; i++) {
        write(f, "012345678901234567890123456789" , 30);
        fsync(f);
    }
    clock_t uend = clock();
    close (f);
    printf("   sync() seconds:%lf   writes per second:%lf\n", ((double)(uend-ustart))/(CLOCKS_PER_SEC), ((double)records)/((double)(uend-ustart))/(CLOCKS_PER_SEC));
} …
Run Code Online (Sandbox Code Playgroud)

c performance fsync

1
推荐指数
1
解决办法
8670
查看次数

如何在golang中创建一个充满"000000 ..."数据的10MB文件?

我打算在log或diskqueue这样的系统中使用fdatasync.第一件事是在文件系统中创建一个带有"000000 ..."的10MB文件,如ext4.但我不知道如何正确地做到这一点.

file fsync go sparse-file

1
推荐指数
2
解决办法
4074
查看次数

标签 统计

fsync ×6

c ×3

file ×1

flush ×1

git ×1

git-clone ×1

go ×1

io ×1

linux ×1

performance ×1

python ×1

sparse-file ×1