我想使用 clone
函数的命名空间功能。阅读联机帮助页,似乎 clone
有很多我需要担心的复杂细节。
是否有等效的 clone
调用 good ol' fork()
?
我已经熟悉 fork
,并且相信如果我在 clone
中有一个起点,我可以从那里添加标志和选项。
最佳答案
我认为这会起作用,但我对某些指针参数并不完全确定。
pid_t child = clone( child_f, child_stack,
/* int flags */ SIGCHLD,
/* argument to child_f */ NULL,
/* pid_t *pid */ NULL,
/* struct usr_desc * tls */ NULL,
/* pid_t *ctid */ NULL );
在 flags 参数中,它的低字节用于指定发送哪个信号来通知线程的父线程正在执行诸如死亡或停止之类的事情。我相信所有实际标志都会打开与 fork
不同的开关。查看内核代码表明是这种情况。
如果你真的想得到接近fork
的东西,你可能想调用sys_clone
,它不接受函数指针,而是像fork一样返回两次
.
关于相当于 fork 的克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2898579/