相当于 fork 的克隆?

标签 c linux fork

我想使用 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/

相关文章:

c - 是否可以 fork/exec 并保证一个先于另一个启动?

在同一行转换两次

c - 如何在 C 语言中对文件运行凯撒密码

Linux cronjob wget 到文件而不是 STDOUT

Linux 删除至少 2 周前的文件 AND (day of month) % 14 != 0

linux - ltrace 不适用于某些二进制文件

linux的fork和系统资源

c - 注释行 : 上的段错误

c - 在调用函数中接收二维指针数组

使用 fork 创建多个进程