相关疑难解决方法(0)

如何使用Go读/写文件?

我一直在努力学习Go,但我一直难以尝试从普通文件读取和写入.

我可以得到inFile, _ := os.Open(INFILE, 0, 0),但实际上获取文件的内容没有意义,因为read函数将a []byte作为参数.

func (file *File) Read(b []byte) (n int, err Error)
Run Code Online (Sandbox Code Playgroud)

file go

274
推荐指数
8
解决办法
20万
查看次数

close()在Linux上调用fsync()吗?

当我们打电话时close(<fd>),它会自动fsync()同步到物理媒体吗?

c unix linux

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

在ofstream :: close()返回后,文件是否可以保证可以立即读取?

我需要我的代码(C++,在Linux上)来调用第二个可执行文件,之前已经编写了一个由第二个程序读取的输出文件.天真的做法,

std::ofstream out("myfile.txt");
// write output here
out.close();
system("secondprogram myfile.txt");
Run Code Online (Sandbox Code Playgroud)

遭遇潜在的竞争条件,即使执行out.close(),文件也无法立即被读取secondprogram?如果是这样,解决这个问题的最佳做法是什么?

三个音符:

  • 如果这是依赖于文件系统的,我对ext3和tmpfs的行为感兴趣.
  • 显然还有其他原因(文件权限等),为什么第二个程序可能无法打开文件; 我只是对竞争条件的潜力感兴趣.
  • 上面示例中的硬编码文件名是为了简单起见; 实际上我用mkstemp.

c++ linux file-io race-condition

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

close(2) 之后调用 fsync(2)

设想:

任务代码(错误检查省略):

// open, write and close
fd = open(name);
write(fd, buf, len);
close(fd);
< more code here **not** issuing read/writes to name but maybe open()ing it >
// open again and fsync
fd = open(name);
fsync(fd);
Run Code Online (Sandbox Code Playgroud)

name系统中不再有任务同时访问。

它是否已定义,更重要的是,它是否会同步 所引用的 inode 上可能的未完成写入name?即,我会buf在 fsync 之后从文件中读回吗?

来自 POSIX http://pubs.opengroup.org/onlinepubs/009695399/functions/fsync.html我想说这似乎合法......

谢谢。

5 月 18 日编辑:感谢您的回答和研究。我(2016 年)向 extfs 首席开发人员之一(Ted)提出了这个问题,并得到了这样的答案:“Posix 不保证它,但实际上它应该适用于大多数文件系统,包括 ext4。Posix 中的关键词规格为:

fsync()函数应请求将由命名的打开文件描述符的fildes所有数据传输到与 所描述的文件关联的存储设备fildes

它没有说“...描述的文件的所有数据fildes”,而是说“打开的文件描述符的所有数据”。因此从技术上讲,不能保证由另一个文件描述符写入的数据会同步到磁盘。

实际上,文件系统不会尝试通过 fd 进入的脏数据,因此您无需担心。编写的内容超过严格要求的操作系统是符合标准的,因此您通常会发现这一点,即使它没有得到保证。”这比“完全相同的持久保证”不太具体,但相当权威,尽管可能已经过时了。

我想做的是一个适用于单个文件的“同步”命令。就像 …

c unix linux filesystems posix

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

如何从python文件中删除行

可能的重复:
删除文件中的特定行(python)

我需要从文件 f= 中删除包含数字“2”的行

2 3
5 6
7 2
4 5
Run Code Online (Sandbox Code Playgroud)

python

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

标签 统计

linux ×3

c ×2

unix ×2

c++ ×1

file ×1

file-io ×1

filesystems ×1

go ×1

posix ×1

python ×1

race-condition ×1