最近我正在学习Linux编程,我发现了一些奇怪的事情。clone_flags of do_fork()在<uapi/linux/sched.h>中列出,但我发现它们在语义方面有不同的命名约定。
clone_flags大致可分为以下几类:
CLONE_VM,CLONE_FS,CLONE_FILES,.:CLONE_ABC表示父进程和子进程共享资源ABCCLONE_NEWNS,CLONE_NEWIPC,CLONE_NEWUSER,.:CLONE_NEWABC意思是为子进程创建新的 ABCCLONE_SETTLS:这是为子进程创建新的 TLS的唯一一个CLONE_IO:这是克隆子进程的 IO上下文的唯一一个我认为这些旗帜在命名约定上有很大的不同。为什么我们不能将NEW放在第二个类别中,并将它们合并到第一个类别中。CLONE_IO与第一类完全相反。
有什么历史原因造成这种奇怪(我想)的情况吗?或者对命名约定是如何工作的有任何解释吗?
发布于 2016-02-26 06:37:39
为什么我们不能把新的放在第二个类别中,把它们合并到第一个类别中。
因为你一眼就能看出是怎么回事。如果标志包含NEW -我们正在创建资源。如果我们使用TID -标志包含TID ( CLONE_PARENT_SETTID、CLONE_CHILD_CLEARTID、CLONE_CHILD_SETTID )。我不觉得这个命名惯例很奇怪。
https://stackoverflow.com/questions/35640977
复制相似问题