C/C++ 中 exit() 函数的参数意义
来源:互联网 发布:七雄战记网络错误1 编辑:程序博客网 时间:2024/05/16 18:21
C 语言的设计之初就是为 Unix 系统设计的,而这个系统是『很多程序互相配合』搭配成一个系统。
每个运行着的程序都是进程,而进程就会有父进程,父进程通常是直接启动你的进程,父进程死亡的进程会被 init 收养,其父进程变为 init,而 init 的父进程是进程 0,进程 0 则是系统启动时启动的第一个进程。
exit() 里面的参数,是传递给其父进程的。对父进程来说,你的进程仿佛是一个函数,而函数可以有返回值。
所以回答第一个问题:exit() 的参数,是给自己的父进程使用的。通常一个程序的父进程可能是任何进程,因此我们无法预期我们的父进程是否规定必须要有这个返回值,那么我们应当提供这个返回值,以保证不同的父进程的需求得到满足。
一个典型的例子是 make,Makefile 对于一个 target 下面有多条顺序执行的语句,而 make 作为父进程,会检查每个语句的返回值是否为 0 ,遇到任何一个非 0 值,都会停止当前 rule 的执行。而我们知道,make 实际上可以执行任何命令任何程序,因而任何被 make 调用的程序必须有正确的返回值。
另外一个问题,为什么要使用 exit() 函数?
每个运行着的程序都是进程,而进程就会有父进程,父进程通常是直接启动你的进程,父进程死亡的进程会被 init 收养,其父进程变为 init,而 init 的父进程是进程 0,进程 0 则是系统启动时启动的第一个进程。
exit() 里面的参数,是传递给其父进程的。对父进程来说,你的进程仿佛是一个函数,而函数可以有返回值。
所以回答第一个问题:exit() 的参数,是给自己的父进程使用的。通常一个程序的父进程可能是任何进程,因此我们无法预期我们的父进程是否规定必须要有这个返回值,那么我们应当提供这个返回值,以保证不同的父进程的需求得到满足。
一个典型的例子是 make,Makefile 对于一个 target 下面有多条顺序执行的语句,而 make 作为父进程,会检查每个语句的返回值是否为 0 ,遇到任何一个非 0 值,都会停止当前 rule 的执行。而我们知道,make 实际上可以执行任何命令任何程序,因而任何被 make 调用的程序必须有正确的返回值。
另外一个问题,为什么要使用 exit() 函数?
答:是历史原因,虽然现在大多数平台下,直接在 main() 函数里面 return 可以退出程序。但是在某些平台下,在 main() 函数里面 return 会导致程序永远不退出(因为代码已经执行完毕,程序却还没有收到要退出的指令)。换句话说,为了兼容性考虑,在特定的平台下,程序最后一行必须使用 exit() 才能正常退出,这是 exit() 存在的重要价值。
c语言中return与exit的区别
1. exit 用于在程序运行的过程中随时结束程序,exit 的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,而return是返回函数值并退出函数.
2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
3.exit函数是退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息。和机器和操作系统有关一般是 0 为正常退出 非0 为非正常退出
函数原型 void exit(int status); ( 头文件 stdlib.h )
4. return是返回函数调用,如果返回的是main函数,则为退出程序
exit是在调用处强行退出程序,运行一次程序就结束
0 0
- C/C++ 中 exit() 函数的参数意义
- C和C++中main函数里面参数的意义
- c++中main函数参数的意义
- C和C++中main函数里面参数的意义
- C语言中Exit函数的使用
- C语言中Exit函数的使用
- C语言中exit函数的使用
- c和C++main函数中参数的意义和用法
- C/C++ 中 exit() 函数
- C语言中exit函数
- C中exit()和return()函数的区别
- C语言中fgetc()函数的返回值意义
- C语言中fgetc函数返回值的意义
- C语言中fgetc()函数的返回值意义
- C programming-------exit() 函数
- C语言的exit()函数
- listen函数中backlog参数的意义
- C语言中main函数的参数
- Cocos2d-x_手游开发经常使用的工具
- 快速排序 qsort
- 阅读笔记-------------程序员的自我修养
- Android,HTTP请求中文乱码
- java获取汉字拼音首字母
- C/C++ 中 exit() 函数的参数意义
- 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现(by 低端码农 2014.10.27)
- 学习opencv——从摄像机读取视频流并进行边缘检测
- 笔误害人
- OSG之osg::StateAttribute派生类速查
- vxworks中串口写例子
- 关于jetty 三元操作符
- BZOJ 2982 combination Lucas定理
- IT人在IT博客上说说跟IT没关系的事儿