我想用fork()
标记CLONE_PARENT
,但是,我找不到办法做到这一点。
clone()
可能是一个不错的选择,但我想在信号处理程序中调用fork()
并在信号处理程序完成后返回上一个流程。
我可能会更改内核,所以任何需要内核修改的解决方案都可以。
我尝试直接调用系统调用clone
,但我不知道如何在用户空间中获取struct pt_regs
。
答案 0 :(得分:0)
只需使用clone
即可。虽然fork
syscall
仍然存在,但在较新版本的glibc
下,fork
库调用只是clone
的一个链接别名,带有一些特殊参数
对于你没有的任何东西[嗯,大多数]你可以通过NULL
这是一个小小的片段:
#define ARCH_FORK() \
INLINE_SYSCALL (clone, 4, \
CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, 0, \
NULL, &THREAD_SELF->tid)