abort exit _exit return的区别

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 不是系统调用,也不是库函数,而是一个关键字,表示调用堆栈的返回(过程活动记录),是函数的退出,而不是进程的退出。

原文地址:https://www.cnblogs.com/guxuanqing/p/12025041.html

时间: 2024-10-11 17:15:11

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

exit()和return的区别

exit()和return的区别: 按照ANSI C,在最初调用的main()中使用return和exit()的效果相同. 但要注意这里所说的是“最初调用”.如果main()在一个递归程序中,exit()仍然会终止程序:但return将 控制权移交给递归的前一级,直到最初的那一级,此时return才会终止程序.return和exit()的另一个区别 在于,即使在除main()之外的函数中调用exit(),它也将终止程序. _exit()与exit的区别: 头文件: exit:#include<s

Linux进程退出--exit与return的区别

通过fork()函数来创建一个进程,那么如何终止一个进程呢? 进程的退出分为正常退出和异常退出: 正常退出: 1).在main()函数执行return. 2).调用exit()函数 3).调用_exit()函数 异常退出可能调用某种函数也可能收到某种信号. 现在只讨论正常退出: (1)exit和return 的区别: a.exit是一个函数,有参数.exit执行完后把控制权交给系统 b.return是函数执行完后的返回.renturn执行完后把控制权交给调用函数. exit()和_exit()

exit和return的区别

1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统:而return 是退出当前函数,返回函数值,把控制权交给调用函数. 2. exit是系统调用级别,它表示一个进程的结束:而return 是语言级别的,它表示调用堆栈的返回. 3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程.exit将删除进程使用的内存空间,同时把错误信息返回给父进程. 4. void exit(int status); 一般status为0

exit 与 return的区别

当用vfork()创建子进程时,如果用exit()退出,则结果正常,若用return退出,则会导致异常. 下面来分析为什么会这样,以及exit()和return的区别. 源代码:   1 #include<stdio.h>   2 #include<sys/types.h>   3 #include<unistd.h>   4 int main()   5 {   6     pid_t id = vfork();   7     if(id<0)   8    

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

Dameon进程又被称做守护进程,一般来说他有以下2个特点: 1.生命周期非常长,一旦启动,一般不会终止,直到系统推出,不过dameon进程可以通过stop或者发送信号将其杀死 2.在后台执行,不跟任何控制终端关联,终端信号比如:SIGINT,SIGQUIT,SIGTSTP,以及关闭终端都不会影响deamon 如何编写Daemon进程,需要遵循以下规则: (1)执行fork()函数,父进程退出,子进程继续 执行这一步,原因有二: ·父进程有可能是进程组的组长(在命令行启动的情况下),从而不能够执

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

今天遇到一个坑,折腾了一天才把这个坑填上,情况是这样的: 写了段代码,在main()函数中创建一个分离线程,结果这个线程什么都没干就直接挂掉了,代码长这样: [cpp] view plain copy int main() { 创建一个分离线程(): return 0: } 后来百度)了一下,原来在main()函数中写return,会被编译器优化成,也会像exit一样直接杀死所有进程,所以分离出来的线程什么都没干,就随着进程一起挂掉了. 所以多线程编程中,main()函数想退出线程应当使用 [c

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

一:说明 break.continue在条件循环语句及循环语句(for.while.if等)中用于控制程序的走向:而exit则用于种植所有语句并退出当前脚本,除此之外,exit还可以返回上一级程序或命令的执行状态值给当前shell:return类似于exit,只不过return仅用于在函数内部返回函数执行的状态值. break n 如果省略n,则表示跳出整个循环,n表示跳出循环的层数: continue n 如果省略n,则表示跳出本次循环,忽略本次循环的剩余代码,进入循环的下一次循环,n表示退到

exit() 与 return() 的区别

exit()与 return() 的区别为: 1. return返回函数值,是关键字:  exit 是一个函数. 2. return是语言级别的,它表示了调用堆栈的返回:而exit是系统调用级别的,它表示了一个进程的结束. 3. return是函数的退出(返回):exit是进程的退出. 4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的). 5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用:exit函数是退出应用程序,删除进程使用的内存

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

exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中,则会退出函数并返回一值. 详细说: 1. return返回函数值,是关键字:  exit 是一个函数. 2. return是语言级别的,它表示了调用堆栈的返回:而exit是系统调用级别的,它表示了一个进程的结束.   3. return是函数的退出(返回):exit是进程的退出. 4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的). 5. r