gpt4 book ai didi

c - 如何在 C 中测试 CLONE_VM、CLONE_FS 和 CLONE_IO 的效果?

转载 作者:太空狗 更新时间:2023-10-29 11:21:48 24 4
gpt4 key购买 nike

我试图了解这些标志的作用,我已经阅读了描述并进行了一些谷歌搜索,但我不知道如何在设置这些标志时测试子进程和父进程之间的差异。我可以运行哪些 C 函数或 linux 命令来帮助我查看这些标志的效果?

最佳答案

一个很好的例子 CLONE_FS在我看来,另一个答案是:“为什么 cd 必须是一个内置的 shell?”

通常,当您运行一个进程时,它们只会共享某些信息,最显着的是打开的文件描述符,而不是诸如“当前文件系统”之类的信息。

这意味着当 cd 作为进程实现时,调用 chdir() 将:

  1. 开始一个新进程

  2. that 过程中 chdir() 被执行并且 that 过程改变了目录

  3. 进程结束并将控制权返回给一直在其所在目录中的父进程

    CLONE_FS (since Linux 2.0)
    If CLONE_FS is set, the caller and the child process share the
    same filesystem information. This includes the root of the
    filesystem, the current working directory, and the umask. Any
    call to chroot(2), chdir(2), or umask(2) performed by the
    calling process or the child process also affects the other
    process.

现在假设您设置了 CLONE_FS。注意:“这包括……当前工作目录……”。这意味着对 chdir() 的调用不仅会影响当前正在运行的进程,还会影响当前命名空间中的进程。

我所有的描述都在该段的最后一句话中进行了大致总结:

If CLONE_FS is not set, ... Calls to chroot(2), chdir(2), or umask(2) performed later by one ofthe processes do not affect the other process.

关于c - 如何在 C 中测试 CLONE_VM、CLONE_FS 和 CLONE_IO 的效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33068474/

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