我试图理解这些标志的作用,我已经阅读了描述并做了一些谷歌搜索,但我不知道如何测试子进程和父进程在设置这些标志时的区别。我可以运行哪些C函数或linux命令来帮助我查看这些标志的效果?
发布于 2018-02-28 08:34:01
在我看来,CLONE_FS的一个很好的例子是对以下问题的另一种回答:“为什么cd必须是内置的shell?”
通常,当你运行一个进程时,它们只共享某些信息,最明显的是打开的文件描述符,而不是像“当前文件系统”这样的东西。
这意味着当cd作为进程实现时,对chdir()的调用将:
将执行该进程chdir()中的
CLONE_FS (从Linux2.0开始)如果设置了CLONE_FS,调用者和子进程将共享相同的文件系统信息。这包括文件系统的根目录、当前工作目录和umask。调用进程或子进程对chroot(2)、chdir(2)或umask(2)的任何调用也会影响其他进程。
现在假设您已经设置了CLONE_FS。注意:“这包括...当前工作目录...”。这意味着对chdir()的调用不仅会影响当前正在运行的进程,还会影响当前名称空间中的进程。
我的所有描述都在这段的最后一句话中做了很大的总结:
如果未设置CLONE_FS,则为
...其中一个进程稍后执行的对chroot(2)、chdir(2)或umask(2)的调用不会影响另一个进程。
https://stackoverflow.com/questions/33068474
复制相似问题