首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么`_exit`有下划线前缀,而其他系统调用没有?

_exit函数是一个系统调用,用于终止进程并返回退出状态给父进程。它的下划线前缀是为了区分它与其他系统调用的命名。

在Unix-like系统中,系统调用是通过软中断(软件中断)来实现的。当用户程序需要执行一个系统调用时,它会触发一个软中断,将控制权转移到内核态。内核会根据软中断的类型来执行相应的系统调用处理程序。

系统调用的命名是由内核定义的,而不是由用户程序定义的。在Unix-like系统中,系统调用的命名通常是没有下划线前缀的,例如openreadwrite等。这些系统调用是公共的,可以被用户程序直接调用。

_exit函数是一个特殊的系统调用,它用于终止进程,不返回到调用者。它的下划线前缀是为了将其与其他系统调用区分开来,以避免与用户程序中可能存在的同名函数冲突。

需要注意的是,_exit函数是C库提供的一个封装函数,它会在终止进程之前执行一些清理工作,例如关闭文件描述符、刷新缓冲区等。在C语言中,我们通常使用exit函数来终止进程,而不是直接调用_exit系统调用。

总结起来,_exit函数有下划线前缀是为了与其他系统调用区分开来,并且它是一个用于终止进程的特殊系统调用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python中下划线---完全解读

Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用’from module import *’导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划线作为变量名的开始...因为下划线对解释器特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用。...以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”导入;以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的...在 __exit__() 方法中调用了 self.close() . ?该 __exit__() 方法将总是被调用,哪怕是在 with 语块中引发了例外。...__subclasshook__(C) python中以双下划线的是一些系统定义得名称,让python以更优雅得语法实行一些操作,本质上还是一些函数和变量,与其他函数和变量无二。 比如x.

1.6K110

python中那些双下划线开头得函数和变量

Python中下划线---完全解读 Python 用下划线作为变量前缀和后缀指定特殊变量_xxx 不能用from module import *导入__xxx__系统定义名字__xxx类中的私有变量名核心风格...因为下划线对解释器特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用。...以单下划线开头_foo的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import *导入;以双下划线开头的__foo代表类的私有成员;以双下划线开头和结尾的__foo...在调用 print(x) 的同时也调用了__str__() 方法。由于 bytes 类型的引入从 Python 3 开始出现。...在__exit__()方法中调用了 self.close() .该__exit__()方法将总是被调用,哪怕是在 with 语块中引发了例外。

6610
  • Python中5对必知的魔法方法

    引言 在Python中,我们可以使用下划线、字母和数字来命名函数。单词之间的下划线没有太大的意义——它们只是通过在单词之间创建空格来提高可读性。这就是众所周知的s蛇形命名风格。...你可能知道,除了这种使用下划线的常见方式,我们还在函数名之前加上一个或两个下划线(例如:_func,__func) 来表示类或模块内的私有化函数,那些没有下划线前缀的名称被认为是公共 API。...没有上下文管理器,我们必须手动管理这些资源,这很容易出错。 为了用一个自定义类实现这样的行为,需要实现__enter__和 __exit__方法。...__enter__ 方法设置上下文管理器,为我们准备操作所需的资源,__exit__ 方法则是清理应释放的任何已用资源,使其可用。...属性访问控制:__getattr__ 和 __setattr__ 如果你其他语言的编程经验,可能为实例属性设置过显式的getters(访问属性)和setters(设置属性)。

    55220

    Python 里最具代表性的符号,竟如此强大

    一般来讲这些属性都作为实现细节不需要调用者关心,随时都可能改变,我们编程时虽然能访问,但是不建议访问。 这种属性,只有在导入时,才能发挥保护作用。...当我们使用 from tools import * 语句调用时,其实际并没有导入所有_开头的属性,只导入了普通 drive 方法。...除此之外,有没有更安全的保护机制呢?,就是下一部分讨论的私有变量。 四、__var用于私有变量 私有属性解决的之前的保护属性保护力度不够的问题。变量前面加上两个下划线,类里面作为属性名和方法都可以。...五、__var__用于魔术方法 变量前面两个下划线,后面两个下划线。这是 Python 当中的魔术方法,一般是给系统程序调用的。...这就是魔术方法的功效:支持系统调用,改进用户类表现,增加协议支持,使用户类表现得更像系统类。 5.1 Python魔术方法分类 以下所有魔术方法均需要在前后加上__,这里省略了这些双下划线

    76020

    python技巧之下划线

    ) 双下划线前缀的名称(例如__shahriar) 前后都带有双下划线的名称(例如__init__) 5、这些命名什么不同吗?...4、下划线种类 单个下划线(_) 主要有三种情况: 解释器中 _符号是指交互解释器中最后一次执行语句的返回结果。这种用法最初出现在CPython解释器中,其他解释器后来也都跟进了。...双下划线前缀的名称(例如__shahriar) 以双下划线前缀的名称(特别是方法名)并不是一种惯例;它对解释器特定含义。Python会改写这些名称,以免与子类中定义的名称产生冲突。...是当前类名,并带上一个下划线前缀。...前后都带有双下划线的名称(例如__init__) 这些是Python的特殊方法名,这仅仅是一种惯例,一种确保Python系统中的名称不会跟用户自定义的名称发生冲突的方式。

    14910

    Linux设备驱动程序(二)——建立和运行模块

    大多数设备能够中断处理器,中断处理程序异步运行,而且可能在驱动程序正试图处理其他任务时被调用。 linux 可以运行在多处理器上,因此可能同时有多个处理器在使用该进程。...只有系统调用函数的名字前边带有 sys_ 前缀。 lsmod 列出当前装载到内核中的所有模块。lsmod 通过读取 /proc/modules 虚拟文件工作。...可以在模块中包含的其他描述性定义 MODULE_AUTHOR(声明谁编写了模块)。...没有这个定义,你的初始化函数不会被调用; 大部分注册函数以 register_ 做前缀,因此找到它们的另外一个方法是在内核源码里查找 register_; 1、清理函数 每个非试验性的模块也要求一个清理函数...存取 I/O 端口只能在调用 ioperm 或者 iopl 之后,此外,不是所有的平台支持这些系统调用存取/dev/port 可能太慢而无效率,这些系统调用和设备文件都要求特权用户。

    84841

    开源图书《Python完全自学教程》8.7.1下划线

    8.7 封装和私有化 在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,将某些部分“隐藏”起来,在程序外部“看不到”,其含义是其他程序无法调用,不是人用眼睛看不到那个代码。...在类的外部检测 Foo 类是否具有 __name 属性时,返回了 False ,检测 book 属性,则返回了 True 。...那么,为什么在命名属性或方法时,以双下划线开始就能实现封装呢?其原因在于,Python 解释器会对以这种形式命名的对象重命名,在原来的名称前面增加前缀形如 _ClassName 的前缀。...__name 时,Python 解释器没有也不会将 __name 解析为 _Foo__name ,所以在调用__name 时就显示 AttributeError 。...这里约定 _name 只在类内部调用。诚然,如果你不履约,施行“霸权主义”,Python 也不惩戒该行为——没有抛出异常。 >>> Bar.

    59020

    《JavaScript 模式》读书笔记(2)— 基本技巧3

    一、构造函数的首字母大写 JavaScript没有类,但是可以通过new调用构造函数: var adam = new Person();   因为构造函数仍然仅仅是一个函数,它看起来是一个函数名,它和构造函数或者普通函数的行为差不多...尽管他们都是公开的普通方法,但是使用下划线前缀的表示方法可以提醒使用person对象的用户,告诉他们这些方法在其他地方不能确保一定能够正常工作,不能直接调用。   ...下面是一些可选择的下划线约定方式: 使用下划线结尾来表明是私有变量,比如name_。 使用一个下划线前缀来标示受保护属性,使用两个下划线前缀来标示私有属性。...要注意的是,YUIDoc系统是一个和语言无关的系统,它仅仅解析注释的部分,不解析JavaScript代码。缺点是不得不在注释中声明属性名、参数名和方法名。...优点在于该系统具有普适性,可以通过这样的方法为其他任何语言编写注释。

    47430

    一份走心的iOS开发规范

    所以尽量不要使用两个字符作为前缀。禁止使用的前缀包括但不限于:NS,UI,CG,CF,CA,WK,MK,CI,NC。 【必须】禁止在方法前面加下划线“ _ ”。...【必须】避免category中的方法覆盖系统方法。可以使用前缀来区分系统方法和category方法。但前缀不要仅仅使用下划线”_“。...如果我们没有实现initialize方法,运行时初次调用这个类的时候,系统会沿着继承链(类继承体系),先后给继承链上游中的每个超类发送一条initialize消息,直到某个超类实现了initlialize...【必须】NSNotificationCenter在iOS8及更老的系统一个多线程bug,selector执行到一半可能会因为self的销毁引起crash,解决的方案是在selector中使用weak_strong_dance...说明:异步线程默认是没有runloop的,除非手动创建;主线程是系统会自动创建Runloop的。所以在异步线程调用是请先确保该线程是Runloop的。

    12K145

    Python 中的 “私有”(实现)类

    因此,除了注释和文档字符串之外,是否一种机制可以将类标记为“私有”或“内部”?我知道下划线机制,但据我了解,它只适用于变量、函数和方法名称。...2、解决方案答案 1:使用单个下划线前缀:class _Internal: ...这是 Python 中“内部”符号的官方约定;“from module import *”不会导入以 下划线前缀的对象...Python 中没有私有类/方法/函数。至少不是像 Java 等其他语言中的严格隐私。您只能指示/建议隐私。这遵循惯例。将类/函数/方法标记为私有的 Python 约定是在其前面加下划线 ()。...您还可以通过在方法前加两个下划线来创建伪隐私(例如,__foo)。您无法直接访问该方法,但仍可以通过使用类名前缀(例如,classname__foo)调用它。...用 Perl 书中关于隐私的一句名言来解释,其理念是您应该待在客厅外,因为您没有被邀请,不是因为它是用猎枪捍卫的。答案 3:定义 all,即您要导出的名称列表(请参阅文档)。

    9910

    Python 魔法函数总结

    下划线与类函数、变量 Python用下划线作为变量前缀和后缀指定特殊变量、函数 单下划线开头 保护变量,只有类对象和子类对象自己能访问到这些变量 不能用 ’from module import *’ 导入...__slots__() 只定义特定集合的某些属性,使用之后类变成静态一样,没有了__dict__, 实例也不可新添加属性 类相关魔法函数 目的 所编写代码 Python 实际调用 初始化一个实例...在调用 print(x) 的同时也调用了 __str__() 方法。 由于 bytes 类型的引入从 Python 3 开始出现。...__getattr__('color');只会返回x.color 已定义好的值。 无论何时给属性赋值,都会调用 __setattr__() 方法。...在 __exit__() 方法中调用了 self.close() . 该 __exit__() 方法将总是被调用,哪怕是在 with 语块中引发了例外。

    59310

    Python下划线5种含义代码实例解析

    五种Python下划线模式速查表: ? 单前导下划线:_var 当涉及到变量和方法名称时,单个下划线前缀一个约定俗成的含义。...下划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用。 该约定在PEP 8中定义。 这不是Python强制规定的。...让这些概念完全沉浸下来,以便你能够理解名称修饰的总体思路,以及我向您展示的一些其他的行为。如果有一天你和它们不期遇,你会知道在文档中按什么来查。...由双下划线前缀和后缀包围的变量不会被Python解释器修改: class PrefixPostfixTest: def __init__(self): self....__bam__ 42 但是,Python保留了双前导和双末尾下划线的名称,用于特殊用途。 这样的例子,__init__对象构造函数,或__call__ — 它使得一个对象可以被调用

    70320

    59个Python使用技巧,从此你的Python与众不同(二)

    因此,python将会使用LOCAL_FAST不是LOAD_GLOBAL(全局查找)。那么这到底多快呢?...list_2在函数的第二次调用时并没有得到一个新的list并填入2,而是在第一次调用结果的基础上append了一个2。为什么会发生这样在其他编程语言中简直就是设计bug一样的问题呢?...之后所有的函数调用时,如果参数不显示的给予赋值,那么所谓的参数默认值不过是一个指向那个在compile阶段就已经存在的对象的指针。如果调用函数时,没有显示指定传入参数值得话。...正如Python文档中所述: 以下划线 __ 为前缀的名称(如_pam)应该被视为API中非公开的部分(不管是函数、方法还是数据成员)。...名称前后的双下划线(如:init) 这种用法表示Python中特殊的方法名。其实,这只是一种惯例,对Python系统来说,这将确保不会与用户自定义的名称冲突。

    47210

    令人头疼的代码命名规范……

    常见命名规范 为什么需要命名规范呢?世界级软件大师 Martin Fowler 大神都说过 CS 领域两大最难的事情,一是缓存失效,一是程序命名。 ?...小驼峰命名法(lowerCamelCase) 除第一个单词之外,其他单词首字母大写。方法名、参数名、成员变量、局部变量需要使用小驼峰命名法(lowerCamelCase)。...个人的英语单词individual、personal、private、one-man,进一步对以上四个单词词意进行分析并在保证了唯一性,继而使用每个单词的前4个字母作为前缀,与com也做了区分.示例如下所示...变量:小写,由下划线连接各个单词。如color、this_is_a_variable。注意: 不论是类成员变量还是全局变量,均不使用 m 或 g 前缀。 私有类成员使用单一下划线前缀标识。...两个前导和后缀下划线:“魔”(特殊用图)对象或者属性,例如__init__或者__file__。绝对不要创造这样的名字,只是使用它们。注意:关于下划线的使用存在一些争议。

    5.5K31

    【python】59个Python使用技巧,从此你的Python与众不同(二)

    因此,python将会使用LOCAL_FAST不是LOAD_GLOBAL(全局查找)。那么这到底多快呢?...list_2在函数的第二次调用时并没有得到一个新的list并填入2,而是在第一次调用结果的基础上append了一个2。为什么会发生这样在其他编程语言中简直就是设计bug一样的问题呢?...之后所有的函数调用时,如果参数不显示的给予赋值,那么所谓的参数默认值不过是一个指向那个在compile阶段就已经存在的对象的指针。如果调用函数时,没有显示指定传入参数值得话。...正如Python文档中所述: 以下划线 __ 为前缀的名称(如_pam)应该被视为API中非公开的部分(不管是函数、方法还是数据成员)。...名称前后的双下划线(如:init) 这种用法表示Python中特殊的方法名。其实,这只是一种惯例,对Python系统来说,这将确保不会与用户自定义的名称冲突。

    42120

    Java Code Review 指南

    一名经验的开发人员。 其他人员可以选择自愿参与。 Java Review 通用 代码是否符合需求,是否可以输出正常结果。 是否明确错误。 不要返会null数组/集合。...调用第三方的接口和第三方类方法,是否捕获了所有异常。 对内提供的RPC接口统一使用Response类和RespCode响应码。 和业务结合的算法,要明确注释清楚。...普通索引使用idx_作为前缀,后面根据索引顺序用下划线( _ )连接各个字段名,字段名使用驼峰格式。如idx_patientName_areaId等。...唯一索引使用uni_作为前缀,后面根据索引顺序用下划线( _ )连接各个字段名,字段名使用驼峰格式。如uni_patientName_areaId等。...不要提交过于小且没有完整意义的commit。 ---- 提交说明 提交的message英石解释两个方面,做了什么和为什么要做。 提交标题总结本次提交都做了什么,提交细则详细描述为什么要这么做。

    1.8K50

    python0010_hello_world_unix_c历史迷因

    回忆上次内容我们这次设置了断点设置断点的目的是更快地调试调试的目的是去除 ​​bug​​别害怕 ​​bug​​一步步地总能找到 ​​bug​​这就是程序员基本功调试 ​​debug​​这个bug虫子是历史渊源的编程也是历史迷因的为什么写程序都从...​​unix​​为了制作操作系统他们创造了 ​​c​​ 语言的编译器​编辑当时​​c​​ 是他们为了开发 ​​unix​​ 制作的语言​​unix​​ 是为了能玩 ​​star travel​​ 制作的系统...c​​ 和 ​​unix​​ 只能运行在当时的机器上没有文档没有书籍甚至没有人知道​编辑与他们同在 bell 实验室的 ​​Brian Wilson Kernighan​​ a.k.a ​​bwk​开始写...不认识pront?​...dir()​dir(__builtins__)​注意前后都是两个下划线​编辑​__builtins__​​ 意思是在里面构建好的这里面有好多内置的函数包括我们熟悉的exit()print()dir()help

    75810

    JAVA 初学者的编码规范一:命名风格与代码格式

    小白写的,别人可能要花上10分钟去读取,大牛写的代码可能只需要一分钟!其中差距就这么大! 为什么我们一定要注重编码规范呢? 俗话说:无规矩不成方圆,无规范难以协同!...规范 命名风格 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束! 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式!...类名使用首字母大写的驼峰命名法 例如:UpperCamelCase 但是例外:比如: DO/BO/DTO/VO/AO/PO/UID等不在此列!...命名要达到望文知意 对于Service和DAO类,内部的实现类一定以 接口类名当做前缀以 Impl当做后缀 枚举类带上Enum后缀,枚举成员名需要全大写,单词间隔使用下划线隔开!...遵循下方规范: 第二行与第一行缩进4个字符,从第三行开始不再缩进 运算符与下文一起换行 方法调用与下文一起换行 方法调用中的多个参数需要换行时,在逗号后进行 在括号前不要进行换行 9.

    69530
    领券