gpt4 book ai didi

c++ - 每个文件的 seek_ptr 是唯一的吗?

转载 作者:行者123 更新时间:2023-12-04 03:27:50 25 4
gpt4 key购买 nike

抱歉,我没有找到我的问题的明确答案,

我知道每个文件都有自己的 seek_ptr,让我们假设主进程打开了到 file_A 的连接,然后在执行任何调用 fork() 之前

然后 fork 进程读取 2 个字符,这是正确的吗?

  1. 两个文件的 seek_ptr 是否都等于 2?

  2. seek_ptr 对于子进程等于 2 而对于主进程仍然为 0?


仅当答案为 1 时:

如何在记事本中打开 2 个文件并且每个文件在不同位置都有其指示器/光标?

最佳答案

在 Unix 中,(pid, fd) 充当指向内核打开文件描述表的指针。当一个进程被 fork 时,子进程将有一个不同的 PID,称之为 pid2。所以 (pid2, fd)(pid, fd) 是不同的键。然而,这两个指针实际上指向相同的打开文件描述:fork 本身并不派生打开文件描述。因此,它们共享一个偏移量。如果一个进程寻求,它也会影响另一个进程。如果一个进程读取,它也会影响另一个进程。

但是,任何一个进程都可以自由调用close 来将fd 与现有打开的文件描述分离,然后调用open 来创建fd em>new 打开可能引用同一文件的文件描述。完成此操作后,两个进程将具有不同的打开文件描述,并且在一个中查找不会影响另一个。

每次成功调用 open 都会创建一个新的打开文件描述。

关于c++ - 每个文件的 seek_ptr 是唯一的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67309504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com