首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么clone_flags of do_fork()有不同的命名约定?

为什么clone_flags of do_fork()有不同的命名约定?
EN

Stack Overflow用户
提问于 2016-02-25 03:47:53
回答 1查看 281关注 0票数 0

最近我正在学习Linux编程,我发现了一些奇怪的事情。clone_flags of do_fork()<uapi/linux/sched.h>中列出,但我发现它们在语义方面有不同的命名约定。

clone_flags大致可分为以下几类:

  1. CLONE_VMCLONE_FSCLONE_FILES,.:CLONE_ABC表示父进程和子进程共享资源ABC
  2. CLONE_NEWNSCLONE_NEWIPCCLONE_NEWUSER,.:CLONE_NEWABC意思是为子进程创建新的 ABC
  3. CLONE_SETTLS:这是为子进程创建新的 TLS的唯一一个
  4. CLONE_IO:这是克隆子进程的 IO上下文的唯一一个
  5. 其他一些与资源共享方案无关的东西

我认为这些旗帜在命名约定上有很大的不同。为什么我们不能将NEW放在第二个类别中,并将它们合并到第一个类别中。CLONE_IO与第一类完全相反。

有什么历史原因造成这种奇怪(我想)的情况吗?或者对命名约定是如何工作的有任何解释吗?

EN

回答 1

Stack Overflow用户

发布于 2016-02-26 06:37:39

为什么我们不能把新的放在第二个类别中,把它们合并到第一个类别中。

因为你一眼就能看出是怎么回事。如果标志包含NEW -我们正在创建资源。如果我们使用TID -标志包含TID ( CLONE_PARENT_SETTIDCLONE_CHILD_CLEARTIDCLONE_CHILD_SETTID )。我不觉得这个命名惯例很奇怪。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35640977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档