exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束

  return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值..

  exit(1)表示进程正常退出. 返回 1;

  exit(0)表示进程非正常退出. 返回 0.

  进程环境与进程控制(1): 进程的开始与终止

  1. 进程的开始:

  C程序是从main函数开始执行, 原型如下:

  int main(int argc, char *argv[]);

  通常main的返回值是int型, 正确返回0.

  如果main的返回值为void或者无, 某些编译器会给出警告, 此时main的返回值通常是0.

  关于main的命令行参数不做过多解释, 以下面的程序展示一下:

以下是代码片段:
  #include 
  int main(int argc, char *argv[]) 
  { 
  int i; 
  for (i = 0; i < argc; i++) 
  printf("argv[%d]: %s\n", i, argv[i]); 
  return 0; 
  }

  2.
进程终止:

  C程序的终止分为两种: 正常终止和异常终止.

  正常终止分为: return, exit, _exit, _Exit, pthreade_exit

  异常中指分为: abort, SIGNAL, 线程响应取消

  主要说一下正常终止的前4种, 即exit系列函数.

以下是代码片段:
    #include
 
  void exit(int status); 
  void _Exit(int status); 
  #include  
  void _exit(int status);

  以上3个函数的区别是:

  exit()(或return 0)会调用终止处理程序和用户空间的标准I/O清理程序(如fclose),
_exit和_Exit不调用而直接由内核接管进行清

  理.

  因此, 在main函数中exit(0)等价于return 0.

  3.
atexit终止处理程序:

  ISO C规定, 一个进程最对可登记32个终止处理函数, 这些函数由exit按登记相反的顺序自动调用. 如果同一函数登记多次,
也会被

  调用多次.

  原型如下:

  #include

  int atexit(void (*func)(void));

  其中参数是一个函数指针, 指向终止处理函数, 该函数无参无返回值.

  以下面的程序为例:

以下是代码片段:
 #include 
  static void myexit1() 
  { 
  printf("first exit handler\n"); 
  } 
  static void myexit2() 
  { 
  printf("second exit handler\n"); 
  } 
  int main() 
  { 
  if (atexit(my_exit2) != 0) 
  printf("can't register my_exit2\n"); 
  if (atexit(my_exit1) != 0) 
  printf("can't register my_exit1\n"); 
  if (atexit(my_exit1) != 0) 
  printf("can't register my_exit1\n"); 
  printf("main is done\n"); 
  return 0; 
  }

  运行结果:

以下是代码片段:

 $ ./a.out 
  main is done 
  first exit handler 
  first exit handler 
  second exit handler运行结果: 
  $./a.out arg1 arg2 arg3 
  argv[0]: ./a.out 
  argv[1]: arg1 
  argv[2]: arg2 
  argv[3]: arg3

C语言中exit函数的使用的更多相关文章

  1. (转)C语言中Exit函数的使用

    C语言中Exit函数的使用 exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如 ...

  2. C语言中system()函数的用法总结(转)

    system()函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码: #include <sys/types.h> #include <sys/wait ...

  3. c语言中的c语言中realloc()函数解析

    c语言中realloc()函数解析 真是有点惭愧,这些内容本应该很早就掌握的,以前只是糊里糊涂的用,不知道在内存中具体是怎么回事,现在才弄清楚. realloc(void *__ptr, size_t ...

  4. C语言中qsort函数用法

    C语言中qsort函数用法-示例分析    本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...

  5. 使用C语言中qsort()函数对浮点型数组无法成功排序的问题

    一 写在开头 1.1 本节内容 本节主要内容是有关C语言中qsort()函数的探讨. 二 问题和相应解决方法 qsort()是C标准库中的一个通用的排序函数.它既能对整型数据进行排序也能对浮点型数据进 ...

  6. C语言中malloc函数返回值是否需要类型强制转换问题

    1. 在C语言中, 如果调用的函数没有函数原型, 则其返回值将默认为 int 型. 考虑调用malloc函数时忘记了 #include <stdlib.h>的情况 此时malloc函数返回 ...

  7. R语言中apply函数

    前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言 ...

  8. C语言中malloc函数的理解

    在C语言中malloc函数主要是用在堆内存的申请上,使用malloc函数时,函数会返回一个void *类型的值,这个值就是你申请的堆内存的首地址:为什么返回的地址是一个void *类型的地址呢?首先我 ...

  9. 关于C语言中printf函数“输出歧视”的问题

    目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...

随机推荐

  1. work,i/o最小线程设置

    设置work i/o最小线程有两种方式1.通过配置文件设置,影响所有iis部署程序(待验证)2.通过程序代码设置,iis上部署的程序互不影响int minWorker, minIOC; //Get t ...

  2. Vs2010创建WebService

    在Visual Studio 2010中已经找不到直接创建WebService的模板方式了,但下面的方法可心实现: 在 Visual Studio 2010 的新建 Web 应用程序或者 Web 网站 ...

  3. java中被遗忘的native关键字

    我是无意间看见JNI( java调用动态链接库dll )这块的东西. 所有记下来:本地声明方法  装载完成dll文件后,将使用的方法用native关键字声明. public native static ...

  4. Android 5.0 API新增和改进

    开始开发 要构建 Android 5.0 版应用,您必须先下载 Android SDK,然后使用 SDK 管理器下载 Android 5.0 SDK 平台和系统映像. 更新您的目标 API 级别 要进 ...

  5. php 升级后 htmlspecialchars 返回空 的解决方案

    今天将php版本升级到5.3.0以上(我升级到php5.4.13)的版本后发现一个问题 htmlspecialchars 函数返回为空.查了资料后,发现新版本对htmlspecialchars这个函数 ...

  6. Oracle12c Release1安装图解(详解)

    工具/原料   Windows系统平台 Oracle12cR1数据库软件 方法/步骤   1 我的机器基础环境:Windows8(x64) + Oracle11g Release2(x64): 初次全 ...

  7. <转>Logistic回归总结

    转自http://blog.csdn.net/dongtingzhizi/article/details/15962797 当我第一遍看完台大的机器学习的视频的时候,我以为我理解了逻辑回归,可后来越看 ...

  8. jquery类似方法的比较(二)

    (1)append()&appendTo()&prepend()$prependTo() (2)after()&before()&insertAfter()&i ...

  9. 4.querystring属性

    1.querystring.stringify(obj[, sep[, eq[, options]]]) 序列化, 第二个参数分隔符, 第三个参数是对象分隔符 querystring.stringif ...

  10. Windows Phone 页面切换动画

    1.首先引用Microsoft.Phone.Toolkit 2.将App.xaml.cs 中的 RootFrame = new PhoneApplicationFrame(); 改成RootFrame ...