- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图了解这些标志的作用,我已经阅读了描述并进行了一些谷歌搜索,但我不知道如何在设置这些标志时测试子进程和父进程之间的差异。我可以运行哪些 C 函数或 linux 命令来帮助我查看这些标志的效果?
最佳答案
一个很好的例子 CLONE_FS
在我看来,另一个答案是:“为什么 cd
必须是一个内置的 shell?”
通常,当您运行一个进程时,它们只会共享某些信息,最显着的是打开的文件描述符,而不是诸如“当前文件系统”之类的信息。
这意味着当 cd
作为进程实现时,调用 chdir()
将:
开始一个新进程
在 that 过程中 chdir()
被执行并且 that 过程改变了目录
进程结束并将控制权返回给一直在其所在目录中的父进程
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/
我正在使用 linux c 中的克隆功能。 但是,当我尝试编译我的代码时遇到错误 CLONE_VM undeclared (first use in this function)。 我去谷歌寻找解决方
最近遇到一个关于多进程共享内存的问题。考虑下面的代码,主要目的是让子进程被定时器的信号处理程序警告,做一些输出。但让我感到困惑的是,当我在 clone() 函数中设置 CLONE_VM 标志时,计时器
我遇到过这样一种情况,即在两个处理器之间多次调用 glibc/系统调用,其中一个是通过使用 CLONE_VM 调用 clone() 创建的,最终会导致我的程序崩溃。 根据我的理解,如果我打算使用 CL
我试图了解这些标志的作用,我已经阅读了描述并进行了一些谷歌搜索,但我不知道如何在设置这些标志时测试子进程和父进程之间的差异。我可以运行哪些 C 函数或 linux 命令来帮助我查看这些标志的效果? 最
我是一名优秀的程序员,十分优秀!