exit()函数导致子进程的正常退出,并且参数status&这个值将被返回给父进程。exit()应该是库函数。exit()函数其实是对_exit()函数的一种封装(库函数就是对系统调用的一种封装)。

_exit()函数终止调用的进程,进程所有的文件描述符(在linux中一切皆文件)都被关闭, 这个进程的所有子进程将被init(最初的进程,所有的进程都是来自init进程,所有的进程都由其父进程创建,即init进程是所有进程的祖先!)进程领养,并且这个终止的进程将向它的父进程发送一个sigchld信号。_exit()的参数status被返回给这个终止进程的父进程来作为这个终止进程的退出状态,这个退出状态值能被wait()函数族的调用收集(就是通过wait()函数来获得子进程的退出状态,之后wait()函数将会释放子进程的地址空间,否则会出现zoom进程)。  _exit()函数是系统调用。会清理内存和包括pcb(内核描述进程的主要数据结构)在内的数据结构,但是不会刷新流,而exit()函数会刷新流。比如exit()函数会将I/O缓冲中的数据写出或读入(printf()就是I/O缓冲,遇到‘\n’才会刷新,若直接调用exit()则会刷新,而_exit()则不会刷新)
return 不是系统调用,也不是库函数,而是一个关键字,表示调用堆栈的返回(过程活动记录),是函数的退出,而不是进程的退出。

abort exit _exit return的区别的更多相关文章

  1. break、continue、exit、return的区别和对比

    break.continue.exit.return的区别和对比 一:说明 break.continue在条件循环语句及循环语句(for.while.if等)中用于控制程序的走向:而exit则用于种植 ...

  2. linux之Deamon进程创建及其进程exit,_exit,return之间的区别

    Dameon进程又被称做守护进程,一般来说他有以下2个特点: 1.生命周期非常长,一旦启动,一般不会终止,直到系统推出,不过dameon进程可以通过stop或者发送信号将其杀死 2.在后台执行,不跟任 ...

  3. C语言中exit()与return的区别

    整理自exit函数和return函数 1.exit函数和return函数的主要区别是: 1)exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的.main函数结束时也会隐式地调用e ...

  4. Linux编程中的坑——C++中exit和return的区别

    今天遇到一个坑,折腾了一天才把这个坑填上,情况是这样的: 写了段代码,在main()函数中创建一个分离线程,结果这个线程什么都没干就直接挂掉了,代码长这样: int main() { 创建一个分离线程 ...

  5. PHP中die()、exit()、return的区别

    1.die()是exit()的别名函数,用法与exit()完全相同,php手册上的说法是,“使用这种别名通常不是个好主意,因为这种别名可能会被完全废弃或更名,导致脚本难以移植到新版本的 PHP 上.” ...

  6. exit() 与 return() 的区别

    exit()与 return() 的区别为: 1. return返回函数值,是关键字:  exit 是一个函数. 2. return是语言级别的,它表示了调用堆栈的返回:而exit是系统调用级别的,它 ...

  7. exit(0)与exit(1),return三者区别(详解)

    exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中,则会退出函数并返回一值. 详细说: 1. return返回函数值,是关键字 ...

  8. exit与return的区别

    ===========================PHP的解释=========================================================== return ...

  9. exit和return的区别

     主要有几下几个不同点:     1. return返回函数值,是关键字:exit是一个函数.     2. return是语言级别的,它表示了调用堆栈的返回:而exit是系统调用级别的,它表示了一个 ...

随机推荐

  1. js动画---多物体运动

    对于多物体运动和单个物体运动来说,没有特别大的区别,实现原理基本上是一样的,都是通过定时器来实现的,但是多物体有一些地方需要注意,具体哪些需要注意,我将在下面的程序中说明. 首先,我们需要建立几个li ...

  2. Spring AOP(面向切面编程)

    AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理.日志管理.权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性. 简单例子: ...

  3. du -h

    du命令用来查看目录或文件所占用磁盘空间的大小.常用选项组合为:du -sh   一.du的功能:`du` reports the amount of disk space used by the s ...

  4. Nuxt项目支持import写法的最新解决方案

    最近在看Nuxt开发vue项目的视频,视频中讲到Nuxt项目不支持es6的import写法.并提供了解决方案: 1.在package.json中添加我标红的部分: "scripts" ...

  5. Vue的单选/多选效果

    includes()方法判断是否包含某一元素,返回true或false表示是否包含元素,对NaN一样有效 filter()方法用于把Array的某些元素过滤掉,filter()把传入的函数依次作用于每 ...

  6. JS的ES6扩展

    1.字符串扩展 1. includes(str) : 判断是否包含指定的字符串 2. startsWith(str) : 判断是否以指定字符串开头 3. endsWith(str) : 判断是否以指定 ...

  7. ffmpeg结合SDL编写播放器

    创建播放窗口 SDL_Surface *screen = NULL; screen = SDL_SetVideoMode(pCodecCtx->width, pCodecCtx->heig ...

  8. word2vector的tensorflow代码实现

    import collections import math import os import random import zipfile import numpy as np import urll ...

  9. x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式

    目录 x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式 一丶x86指令复习. 1.1什么是x86指令. 1.2 x86与x64下的通用寄存器 1.3 OpCode 1.4 7种寻址方式 二 ...

  10. Linux:搭建GitLab

    0.写在前面 GitLab官方明确要求最低配置2核4G,如果配置过低,会出现502错误. 1.安装SSH #安装ssh sudo yum install -y curl policycoreutils ...