【C】C语言中的_exit()与exit()
_exit()和exit()主要区别是一个退出进程会清理I/O缓冲区,一个直接结束进程进入到内核中。
举例说明:
#include <stdio.h> /*demo01 程序只输出 hello world*/
/*
int main()
{
printf("hello world\n");
printf("hello world");
_exit(0);
}
*/ /*demo02 程序输出 hello world
hello world */
/*
int main()
{
printf("hello world\n");
printf("hello world\n");
_exit(0);
}
*/ /*demo03 程序只输出 hello world*/
/*
int main()
{
printf("hello world\n");
printf("hello world");
exit(0);
}
*/ /*demo04 程序输出 hello world
hello world */
/* int main()
{
printf("hello world\n");
printf("hello world\n");
exit(0);
}
解释:
printf函数就是使用的是缓冲I/O的方式,该函数在遇到“\n“换行符时自动的从缓冲区中将记录读出。所以exit()将缓冲区的数据写完后才能退出来,所以调用exit()函数后程序并不会马上退出,这就是有些出现的僵尸程序,而_exit是直接退出进入到内核中去。
return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
return是返回函数调用,如果返回的是main函数,则为退出程序。
exit是在调用处强行退出程序,运行一次程序就结束
exit(1)表示异常退出.这个1是返回给操作系统的不过在DOS好像不需要这个返回值。
exit(0)表示正常退出
无论写在那里,都是程序退出,dos和windows中没有什么不一样,最多是系统处理的不一样。
数字0,1,-1会被写入环境变量ERRORLEVEL,其它程序可以由此判断程序结束状态。
一般0为正常退出,其它数字为异常,其对应的错误可以自己指定。
返回给操作系统的,0是正常退出,其他值是异常退出,在退出前可以给出一些提示信息,或在调试程序中察看出错原因.
参考:https://blog.csdn.net/yyfwd/article/details/50548359
【C】C语言中的_exit()与exit()的更多相关文章
- Python中 os._exit() sys.exit() exit()区别
Python退出程序的方式有两种:os._exit(), sys.exit() 1)os._exit() 直接退出 Python程序,其后的代码也不会继续执行. 2)sys.exit() 引发一个 S ...
- C语言中你可能不熟悉的头文件(stdlib.h)
C语言中你可能不熟悉的头文件<cstdlib>(stdlib.h) C Standard General Utilities Library (header) C标准通用工具库(头文件) ...
- C语言中这么骚的退出程序的方式你知道几个?
C语言中这么骚的退出程序的方式你知道几个? 前言 在本篇文章当中主要给大家介绍C语言当中一些不常用的特性,比如在main函数之前和之后设置我们想要执行的函数,以及各种花式退出程序的方式. main函数 ...
- Java语言中的面向对象特性总结
Java语言中的面向对象特性 (总结得不错) [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知 ...
- C 语言中实现数据与方法的封装
在 C 语言中可以用结构体代替类,用函数指针代替成员方法,实现数据成员与成员方法的封装,在客户端写出的程序与 C++ 类似,唯一的不同是 C 语言中调用函数指针成员时必须将本对象的地址传给函数,因为 ...
- C语言中内存分配 (转)
在任何程序设计环境及语言中,内存管理都十分重要.在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的.因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题. 第1节主要介绍内存管理基本概念,重 ...
- 在 go/golang语言中使用 google Protocol Buffer
怎么在go语言中实用google protocol Buffer呢? 现在的潮流趋势就是一键搞定,跟ubuntu安装软件一样 go get code.google.com/p/goprotobuf/{ ...
- 【转】C语言中内存分配
原文:C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要.在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的.因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题. 第1节主要 ...
- C语言中的神兽strdup
C语言的确博大精深,在C语言的世界中遨游了那么多年,发现自己仍是菜鸟一枚,很多利器没有能够驾驭,今天介绍一个神兽,威力无比,但是却很少人能用得好. 函数原型: #include <string. ...
随机推荐
- windowsAPI之OpenProcessToken,AdjustTokenPrivileges 和LookupPrivilegeValue<转>
这三个函数主要用来提升进程的权限 1 OpenProcessToken()函数:获取进程的令牌句柄 OpenProcessToken的原型. BOOL WINAPI OpenProcessToken( ...
- 揭开牙病之谜 与牙医说再见<转>
原贴地址:https://www.douban.com/group/topic/44383918/ -------------------------------------------------- ...
- 容器viewController添加或者删除子viewController
假设有一个viewControllerA,我们想在viewControllerA中添加viewControllerB,需要执行以下方法: [viewControllerA addChildViewCo ...
- UNITY2018开启deepprofiling
ADB方式调试游戏步骤 前提: 1,手机开启 [开发者模式][USB调试] 2,数据线连接手机和电脑 3,安装adb(注意adb版本不对可能导致adb deveices找不到设备,那就换个adb版本) ...
- How to Pronounce the Months of the Year
How to Pronounce the Months of the Year Share Tweet Share Tagged With: Most Popular Some of the mont ...
- MYSQL数据库中,常见的数据类型有哪些?它们与java中的数据类型如何对应
A.常规 映射 integer 或者 int int 或者 java.lang.Integer INTEGER 4 字节 long long Long BIGINT 8 字节 short short ...
- VMware安装RHEL5.5后修改分辨率设置
1.进入桌面后,点击System -> Administration -> Display,选择Hardware,点击Monitor Type后面的Configure(默认是autocon ...
- ANg-梯度下降算法
概念 为了解决线性回归问题,我们也用梯度下降算法. 算法逻辑如下: 对于线性回归模型中例子,梯度下降可以如下: 算法 实际上梯度下降可有通过求导.这里的符号":="是赋值的含义 有 ...
- Structs复习 Result第一部分
Jar包 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=&q ...
- python技巧 显示对象的所有属性
python技巧 显示对象的所有属性for attr in dir(ad):... print attr+":"+str(getattr(ad,attr))